{"id":37210822,"url":"https://github.com/fossapps/golang_starter","last_synced_at":"2026-01-15T00:01:19.536Z","repository":{"id":57539669,"uuid":"133966335","full_name":"fossapps/golang_starter","owner":"fossapps","description":"REST API starter kit written in golang","archived":true,"fork":false,"pushed_at":"2018-06-09T09:54:04.000Z","size":284,"stargazers_count":3,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-20T16:47:55.705Z","etag":null,"topics":["go","golang","mongodb","redis","rest","rest-api"],"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/fossapps.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-18T14:37:41.000Z","updated_at":"2023-01-28T12:52:58.000Z","dependencies_parsed_at":"2022-09-13T04:02:28.171Z","dependency_job_id":null,"html_url":"https://github.com/fossapps/golang_starter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fossapps/golang_starter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossapps%2Fgolang_starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossapps%2Fgolang_starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossapps%2Fgolang_starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossapps%2Fgolang_starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fossapps","download_url":"https://codeload.github.com/fossapps/golang_starter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossapps%2Fgolang_starter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28439605,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T22:37:52.437Z","status":"ssl_error","status_checked_at":"2026-01-14T22:37:31.496Z","response_time":107,"last_error":"SSL_read: 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":["go","golang","mongodb","redis","rest","rest-api"],"created_at":"2026-01-15T00:00:52.373Z","updated_at":"2026-01-15T00:01:19.513Z","avatar_url":"https://github.com/fossapps.png","language":"Go","readme":"## Golang REST API starter\n\nThis go starter is here for you to take it and modify according to your needs.\nThis project promotes ideomatic go code.\nAnd if there's any parts which has a bad design pattern,\nexpects you to provide feedback by opening a issue.\n\n\n### What is this?\nThe idea is to have everything included (a.k.a. batteries included) starter project,\nafter which all you need to do would be to work on your idea,\ninstead of setting everything up.\n\n### Backend\n- MongoDB for data storage\n- redis for caching\n- docker for providing redis and MongoDB for development\n\n### What features are included?\nThis project provides the following features:\n- [x] JWT based Authentication\n- [x] Pre configured endpoints (see handlers for more info)\n- [x] Permissions\n- [x] Middlewares (includes must_have_permission, rate_limit, auth_middleware etc)\n- [x] Pre defined way of using Database with integration tests\n- [x] Ability to cover 100% of code with tests\n- [x] Ability to unit test each handlers\n- [x] Transformers (so you can transform your db representation into response)\n- [x] mocking (using mockgen)\n- [x] migrations\n- [x] redis cache\n- [x] .env config\n- [x] commands\n- [x] travis and circleci support\n- [x] docker-compose for database and redis\n- [x] logging with logrus (and slack pre configured)\n- [ ] easy email support\n- [ ] sign up\n- [ ] login with open auth provider\n- [ ] recaptcha support (spam protection)\n- [ ] open auth server\n- [ ] command line tool to generate handlers, middlewares, etc\n- [ ] limit login attempts\n- [ ] side effects handling\n- And more to come\n\n### Packages Used\n- [dep](https://github.com/golang/dep) for managing packages\n- [gorilla mux](https://github.com/gorilla/mux) for routing\n- [logrus](https://github.com/sirupsen/logrus) for logging\n- [respond.v1](https://github.com/matryer/respond) for responding to requests\n- [mgo](github.com/globalsign/mgo) for connecting to mongodb\n- [go-redis](github.com/go-redis/redis) for redis\n- [testify](github.com/stretchr/testify) for testing\n- [captain](github.com/cyberhck/captain) for monitoring cron jobs\n- [jwt-go](github.com/dgrijalva/jwt-go) for handling Auth using JWT\n- [go-slack](github.com/multiplay/go-slack) for logging to slack\n- [mock](github.com/golang/mock) for mocking interfaces\n- [pushy](github.com/cyberhck/pushy) for sending push notifications to devices\n\n### Ready to use?\nAs of v0.0.1, this boilerplate is ready for anyone to adapt,\nmodify and use. But beaware, that it's upto you to make this production\nready and usable for your needs.\n\n### Upcoming changes\nThere WILL be breaking changes for a while till this gets to stable,\nproduction ready state, till then, you can watch changes closely and adapt to it.\n\n### Getting Started\nAs of now, it's not an application, but a package, it's because app engine requires you to do so.\nThis doesn't depend on app engine, but because of it's popularity, it made sense to declare as a package\nwhich can be invoked really easily.\n\nIf you don't plan on going that route, you can always modify package name to your needs.\n\nIf you'd just like to see this working, follow the following steps:\n- make sure you have docker and docker-compose\n- make sure you've got go toolchain installed (older versions work, but they tend not to ignore `vendor` directory, so better to use newer go versions\n- Then follow the following commands\n```bash\ncd $GOPATH/\nmkdir -p src/github.com/fossapps/starter\ncd src/github.com/fossapps/starter\ngit clone git@github.com:fossapps/golang_starter.git . # or you can use http url if you'd like\n```\n- then `cd` into starter directory\n- run `cp .env.example .env`\n- run `dep ensure`\n- run `docker-compose up`\n- run `make serve`\n\nAt this point, you'll have a API server running on port 8080 feel free to experiment.\n\n### More Documentation\nIf you decide to use this for your needs, there are a few things which\nyou might have to keep in mind while using this starter project.\n\nVisit WiKi to know how to move forward.\n\n### Contributing\nIf and when you encounter some pain points or bugs, please feel free to open a new issue\n\nSee contributing.md to get started with contributions.\n\n### License (MIT)\nVisit license to see if this fits your needs.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffossapps%2Fgolang_starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffossapps%2Fgolang_starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffossapps%2Fgolang_starter/lists"}