{"id":34159877,"url":"https://github.com/hidevopsio/hiboot-web-app-demo","last_synced_at":"2026-03-12T13:39:50.167Z","repository":{"id":65150036,"uuid":"154818794","full_name":"hidevopsio/hiboot-web-app-demo","owner":"hidevopsio","description":"Writing Hiboot Web Application Step by Step","archived":false,"fork":false,"pushed_at":"2018-11-02T23:48:57.000Z","size":3,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-18T02:27:51.091Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hidevopsio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-26T10:37:55.000Z","updated_at":"2025-01-20T16:12:06.000Z","dependencies_parsed_at":"2023-01-02T15:29:30.046Z","dependency_job_id":null,"html_url":"https://github.com/hidevopsio/hiboot-web-app-demo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hidevopsio/hiboot-web-app-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidevopsio%2Fhiboot-web-app-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidevopsio%2Fhiboot-web-app-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidevopsio%2Fhiboot-web-app-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidevopsio%2Fhiboot-web-app-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hidevopsio","download_url":"https://codeload.github.com/hidevopsio/hiboot-web-app-demo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidevopsio%2Fhiboot-web-app-demo/sbom","scorecard":{"id":464207,"data":{"date":"2025-08-11","repo":{"name":"github.com/hidevopsio/hiboot-web-app-demo","commit":"2be5df8e0101b685579f1dd452059d967017148f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/3 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-19T12:00:26.527Z","repository_id":65150036,"created_at":"2025-08-19T12:00:26.527Z","updated_at":"2025-08-19T12:00:26.527Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30427339,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T12:46:33.731Z","status":"ssl_error","status_checked_at":"2026-03-12T12:42:20.405Z","response_time":114,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-15T08:04:35.109Z","updated_at":"2026-03-12T13:39:50.160Z","avatar_url":"https://github.com/hidevopsio.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hiboot web application demo\n\nThis is the Hiboot web application demo, we are going to demonstrate Hiboot we application programming step by step.\n\n## Step 1, Writing the first Hiboot web application\n\nTo write Hiboot application, as we know, the executable commands must always use package main, so we need to create the main package first.\n\nSee [Effective GO](https://golang.org/doc/effective_go.html#names) to learn more about Go's naming conventions.\n\n## Step 2, adding some starters\n\nHere we are going to add starter [actuator](https://hidevops.io/hiboot/tree/master/pkg/starter/actuator) and [logging](https://hidevops.io/hiboot/tree/master/pkg/starter/logging).\n\n## Step 3, adding Hiboot controller\n\n### Writing the code\n\n```go\n\npackage main\n\nimport (\n\t\"hidevops.io/hiboot/pkg/app/web\"\n\t\"hidevops.io/hiboot/pkg/app\"\n\t\"hidevops.io/hiboot/pkg/starter/actuator\"\n\t\"hidevops.io/hiboot/pkg/starter/logging\"\n\t\"hidevops.io/hiboot/pkg/at\"\n)\n\n// Controller Rest Controller with path /\n// RESTful Controller, derived from web.Controller. The context mapping of this controller is '/' by default\ntype Controller struct {\n\t// at.RestController or web.Controller must be embedded here\n\tat.RestController\n}\n\n// Get GET /\n// Get method, the context mapping of this method is '/' by default\n// the Method name Get means that the http request method is GET\nfunc (c *Controller) Get() string {\n\t// response\n\treturn \"My first Hiboot web application\"\n}\n\nfunc main()  {\n\tweb.NewApplication(new(Controller)).\n\t\tSetProperty(app.ProfilesInclude, actuator.Profile, logging.Profile).\n\t\tRun()\n}\n\n```\n\n### Run the web application\n\nAs shown above, we just start the application, we did not write any business logic yet. But it's runnable, let's take a look,\n\n```bash\ngo run main.go\n```\n\nThe output will be,\n\n```bash\n___  / / /__(_)__  /_______________  /_\n__  /_/ /__  /__  __ \\  __ \\  __ \\  __/\n_  __  / _  / _  /_/ / /_/ / /_/ / /_     Hiboot Application Framework\n/_/ /_/  /_/  /_.___/\\____/\\____/\\__/     https://hidevops.io/hiboot\n\n[INFO] 2018/11/03 07:47 Starting Hiboot web application hiboot-app on localhost with PID 4092\n[INFO] 2018/11/03 07:47 Working directory: /Users/johnd/.gvm/pkgsets/go1.10/hidevops/src/hidevops.io/hiboot-web-app-demo\n[INFO] 2018/11/03 07:47 The following profiles are active: local, [actuator logging web]\n[INFO] 2018/11/03 07:47 Initializing Hiboot Application\n[INFO] 2018/11/03 07:47 Auto configure web starter\n[INFO] 2018/11/03 07:47 Auto configure actuator starter\n[INFO] 2018/11/03 07:47 Auto configure logging starter\n[INFO] 2018/11/03 07:47 Resolving dependencies\n[INFO] 2018/11/03 07:47 Injecting dependencies\n[INFO] 2018/11/03 07:47 Injected dependencies\n[INFO] 2018/11/03 07:47 Mapped \"/\" onto main.Controller.Get()\n[INFO] 2018/11/03 07:47 Mapped \"/health\" onto actuator.healthController.Get()\n[INFO] 2018/11/03 07:47 Hiboot started on port(s) http://localhost:8080\n[INFO] 2018/11/03 07:47 Started hiboot-app in 0.003143 seconds\n```\n\nAs you can see above, the starter actuator and logging is auto configured.\n\nNow we have health check endpoint GET /health, let's use [httpie](https://httpie.org/) to check this endpoint.\n\n```bash\nhttp :8080/health\n```\n\nWe can see the output of above request, my first Hiboot application is up and running. Yeah!\n\n```bash\nHTTP/1.1 200 OK\nContent-Length: 15\nContent-Type: application/json; charset=UTF-8\nDate: Fri, 26 Oct 2018 10:49:12 GMT\n\n{\n    \"status\": \"UP\"\n}\n```\n\nThe application log also prints the request info.\n\n```bash\n\n[INFO] 2018/10/26 18:49 200 215.239µs ::1 GET /health HTTPie/0.9.3\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhidevopsio%2Fhiboot-web-app-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhidevopsio%2Fhiboot-web-app-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhidevopsio%2Fhiboot-web-app-demo/lists"}