{"id":36757700,"url":"https://github.com/zacscoding/echo-gorm-realworld-app","last_synced_at":"2026-01-12T12:51:28.907Z","repository":{"id":57635312,"uuid":"373211935","full_name":"zacscoding/echo-gorm-realworld-app","owner":"zacscoding","description":"realworld application built with Golang + Echo + Gorm","archived":false,"fork":false,"pushed_at":"2022-01-18T15:04:43.000Z","size":755,"stargazers_count":39,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-19T10:16:36.583Z","etag":null,"topics":["echo","go","gorm","realworld","realworld-backend"],"latest_commit_sha":null,"homepage":"","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/zacscoding.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":"2021-06-02T15:13:00.000Z","updated_at":"2024-03-14T01:12:05.000Z","dependencies_parsed_at":"2022-09-26T20:21:31.629Z","dependency_job_id":null,"html_url":"https://github.com/zacscoding/echo-gorm-realworld-app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zacscoding/echo-gorm-realworld-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zacscoding%2Fecho-gorm-realworld-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zacscoding%2Fecho-gorm-realworld-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zacscoding%2Fecho-gorm-realworld-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zacscoding%2Fecho-gorm-realworld-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zacscoding","download_url":"https://codeload.github.com/zacscoding/echo-gorm-realworld-app/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zacscoding%2Fecho-gorm-realworld-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28338986,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T12:22:26.515Z","status":"ssl_error","status_checked_at":"2026-01-12T12:22:10.856Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["echo","go","gorm","realworld","realworld-backend"],"created_at":"2026-01-12T12:51:28.092Z","updated_at":"2026-01-12T12:51:28.896Z","avatar_url":"https://github.com/zacscoding.png","language":"Go","readme":"# ![RealWorld Example App](https://user-images.githubusercontent.com/25560203/128340208-d07d731e-883c-46df-bde3-e236fb326d24.png)  \n![workflow](https://github.com/zacscoding/echo-gorm-realworld-app/actions/workflows/check.yaml/badge.svg)\n\n\u003e ### Go/Echo/GORM codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the [RealWorld](https://github.com/gothinkster/realworld) spec and API.\n\n### [Demo](https://github.com/gothinkster/realworld)\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;[RealWorld](https://github.com/gothinkster/realworld)\n\nThis codebase was created to demonstrate a fully fledged fullstack application built with **[YOUR_FRAMEWORK]** including\nCRUD operations, authentication, routing, pagination, and more.\n\nWe've gone to great lengths to adhere to the **[YOUR_FRAMEWORK]** community styleguides \u0026 best practices.\n\nFor more information on how to this works with other frontends/backends, head over to\nthe [RealWorld](https://github.com/gothinkster/realworld) repo.\n\n# How it works\n\n![Simple Architecture](https://user-images.githubusercontent.com/25560203/128342030-bfeafe65-cf90-4856-90ef-65e345645d39.png)\n\n**Note**: cache layer is not implemented yet.\n\nAPI Server technology stack is\n\n- Server code: **golang**\n- Database: **MySQL**\n- Migrate: **[golang-migrate/migrate](github.com/golang-migrate/migrate)**\n- ORM: **[go-gorm/gorm v2](https://github.com/go-gorm/gorm)**\n- Logging: [uber-go/zap](https://github.com/uber-go/zap)\n- Unit Testing: **go test**, **[stretchr/testify](https://github.com/stretchr/testify)**\n- Integration Testing: **[newman](https://github.com/postmanlabs/newman)**\n- Configuration management: **[knadh/koanf](github.com/knadh/koanf)**\n\n# Getting started\n\n## Using docker-compose\n\n```shell\n// build app-server and start mysql, app-server. \n$ make compose.up\n./scripts/compose.sh up\nCreating network \"echo-gorm-realworld-app_default\" with the default driver\nCreating db ... done\nCreating app-server ... done\n...\n\n$ docker ps -a\nCONTAINER ID   IMAGE                                COMMAND                  CREATED          STATUS          PORTS                                                    NAMES\n01c48db0a1ff   zacscoding/echo-gorm-realworld-app   \"app-server --config…\"   18 minutes ago   Up 17 minutes   0.0.0.0:8080-\u003e8080/tcp, :::8080-\u003e8080/tcp                app-server\n79db7c93b358   mysql:8.0.17                         \"docker-entrypoint.s…\"   18 minutes ago   Up 18 minutes   33060/tcp, 0.0.0.0:43306-\u003e3306/tcp, :::43306-\u003e3306/tcp   db\n```\n\nThis server will serve on localhost:8080. Schema also migrated\nfrom [golang-migrate/migrate](github.com/golang-migrate/migrate) and [migrations](./migrations).\n\n- check api specs at http://localhost:8080/docs in ur browser.\n- see [docker-compose.yaml](./docker-compose.yaml) for more info.\n- see [config-docker.yaml](fixtures/config/config-docker.yaml) for configuration.\n- see [migrations](./migrations) for schema.\n\n# More commands\n\n## Tests and checks lint, build\n\n```shell\n// This command includes clean tests cache, unit test, datarace, build, lint.\n$ make tests\n\n// also can be run each.\n\n// run unit test\n$ make test\n\n// run datarace\n$ make test.datarace\n\n// check build\n$ make test.build\n\n// check lint\n$ make lint\n```\n\n## Integration tests\n\nAfter run servers(e.g: `make compose.up`), u can run integration tests.\n\n```shell\n$ make it.postman\n\n+++ dirname integration/postman/run-api-tests.sh\n++ cd integration/postman\n\n...\n\n┌─────────────────────────┬───────────────────┬──────────────────┐\n│                         │          executed │           failed │\n├─────────────────────────┼───────────────────┼──────────────────┤\n│              iterations │                 1 │                0 │\n├─────────────────────────┼───────────────────┼──────────────────┤\n│                requests │                32 │                0 │\n├─────────────────────────┼───────────────────┼──────────────────┤\n│            test-scripts │                48 │                0 │\n├─────────────────────────┼───────────────────┼──────────────────┤\n│      prerequest-scripts │                18 │                0 │\n├─────────────────────────┼───────────────────┼──────────────────┤\n│              assertions │               263 │                0 │\n├─────────────────────────┴───────────────────┴──────────────────┤\n│ total run duration: 17.8s                                      │\n├────────────────────────────────────────────────────────────────┤\n│ total data received: 5.46KB (approx)                           │\n├────────────────────────────────────────────────────────────────┤\n│ average response time: 27ms [min: 7ms, max: 120ms, s.d.: 30ms] │\n└────────────────────────────────────────────────────────────────┘\n```  \n\n---  \n\n# TODO\n\n- [ ] implement cache([go-redis/redis](https://github.com/go-redis/redis))\n- [ ] unit tests of article handler\n- [ ] integration tests with golang and [gavv/httpexpect](https://github.com/gavv/httpexpect)\n- [ ] monitoring(prometheus + grafana) \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzacscoding%2Fecho-gorm-realworld-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzacscoding%2Fecho-gorm-realworld-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzacscoding%2Fecho-gorm-realworld-app/lists"}