{"id":15715227,"url":"https://github.com/crazyoptimist/gin-starter","last_synced_at":"2026-05-01T14:34:12.368Z","repository":{"id":65748957,"uuid":"598838743","full_name":"crazyoptimist/gin-starter","owner":"crazyoptimist","description":"Gin REST API Starter for Minimalists","archived":false,"fork":false,"pushed_at":"2026-04-13T21:52:58.000Z","size":341,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-13T23:31:55.412Z","etag":null,"topics":["api","boilerplate","gin","go","golang","jwt","modular","pagination","rest-api","starter-kit"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crazyoptimist.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-02-07T22:49:22.000Z","updated_at":"2026-04-13T21:52:56.000Z","dependencies_parsed_at":"2024-01-26T23:24:39.653Z","dependency_job_id":"d2911ee7-77bb-450f-af3e-21b575f1e60b","html_url":"https://github.com/crazyoptimist/gin-starter","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/crazyoptimist/gin-starter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crazyoptimist%2Fgin-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crazyoptimist%2Fgin-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crazyoptimist%2Fgin-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crazyoptimist%2Fgin-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crazyoptimist","download_url":"https://codeload.github.com/crazyoptimist/gin-starter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crazyoptimist%2Fgin-starter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32501403,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["api","boilerplate","gin","go","golang","jwt","modular","pagination","rest-api","starter-kit"],"created_at":"2024-10-03T21:40:40.814Z","updated_at":"2026-05-01T14:34:12.343Z","avatar_url":"https://github.com/crazyoptimist.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gin Starter\n\nThis is a REST API boilerplate.\n\n## Overview\n\nThis project implements the Clean Architecture proposed by Uncle Bob. I do not claim this to be a perfect implementation, but it makes sense to me and hopefully to you. It's important to note that Clean Architecture is not about directory structures, however, it significantly influences them to some extent.\n\nThe project has been organized adhering to several principles: Single Responsibility Principle (SRP), Common Closure Principle (CCP), Dependency Inversion Principle (DIP), and Acyclic Dependency Principle (ADP).\n\n- `internal/domain/model`: This directory contains the entities, also known as the core business rules.\n- Other directories within `internal/domain`: These hold the application-specific business rules.\n- `internal/infrastructure`: This directory houses the low level details of the system.\n\nIn this project, components such as the web server, router, and controller are details, obviously. The `repository` is a database access gateway, thus a detail. Any component that interacts with external services, like a Redis server or a third-party API, is also a detail.\n\nDetails can depend on application business rules, but not vice versa.\nApplication business rules can depend on core business rules, but not vice versa.\n\nWe may need to utilize some external service in application business rules; Dependency Inversion comes to the rescue!\n\nThat concludes the overview for now. I believe this implementation is truly opinionated, though your perspective may differ.\n\n## Development\n\nInstall [air](https://github.com/cosmtrek/air) for live reloading.\n\n```bash\ngo install github.com/cosmtrek/air@latest\n```\n\n```bash\nair\n```\n\n## Test\n\n```bash\nmake test\n```\n\n## Build\n\n```bash\nmake build\n```\n\nBinaries will be generated inside `PROJECT_ROOT/bin/`\n\n## DB Migration\n\n```bash\nmake migrate\n```\n\n## API Documentation\n\n[gin-swagger](https://github.com/swaggo/gin-swagger) is used for API documentation.\n\nTo browse the API documentation, open `BASE_URL/swagger/index.html`.\n\nGenerate/update docs:\n\n```bash\ngo install github.com/swaggo/swag/cmd/swag@latest\n\nmake docs\n```\n\n## License\n\nMIT\n\nMade with :heart: by crazyoptimist\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrazyoptimist%2Fgin-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrazyoptimist%2Fgin-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrazyoptimist%2Fgin-starter/lists"}