{"id":22466175,"url":"https://github.com/dkrizic/todo","last_synced_at":"2026-05-07T13:34:55.532Z","repository":{"id":64031426,"uuid":"572062393","full_name":"dkrizic/todo","owner":"dkrizic","description":"Go Service and client based on Protobuf","archived":false,"fork":false,"pushed_at":"2023-11-13T23:24:40.000Z","size":406,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T03:08:57.812Z","etag":null,"topics":["docker","go","grpc","multiarch","protobuf","rest"],"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/dkrizic.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-29T13:28:24.000Z","updated_at":"2024-01-12T18:50:08.000Z","dependencies_parsed_at":"2024-06-20T03:20:25.271Z","dependency_job_id":null,"html_url":"https://github.com/dkrizic/todo","commit_stats":{"total_commits":217,"total_committers":2,"mean_commits":108.5,"dds":0.004608294930875556,"last_synced_commit":"e18c0151a0328e2d28996bf3d4a76456e3f7e5f9"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkrizic%2Ftodo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkrizic%2Ftodo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkrizic%2Ftodo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkrizic%2Ftodo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkrizic","download_url":"https://codeload.github.com/dkrizic/todo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245868326,"owners_count":20685608,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["docker","go","grpc","multiarch","protobuf","rest"],"created_at":"2024-12-06T10:10:37.309Z","updated_at":"2026-05-07T13:34:55.483Z","avatar_url":"https://github.com/dkrizic.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ToDo List\n\nSample project that includes the following features:\n\n* Go programming language\n* CRUD service offering a simple ToDo list\n* Interface is defined via protobuf\n* Protoc generates\n  * gRPC Server\n  * REST Gateway\n  * Swagger documentation\n\nSo in summary the service offers a REST API and a gRPC API from a single definition.\nThe code is compiled for\n\n* amd64\n* arm64\n\nand available as a Multiaarch Docker image under the following tags:\n\n```\nghcr.io/dkrizic/todo-server:latest\n```\n\n## API\n\nThe directory /api contains the protobuf definition of the API\n\n```\ntodo.proto\n```\n\nAll other files are generated or downloaded. The generated can be updated running\n\n```\n./update\n```\n\nThe generated files are commited\n\n## Server\n\nThe server is implemented in Go and can be found in the directory /server\nIt can be locally run using\n\n```\n$ go run server.go\nINFO[0000] Creating new server                          \nINFO[0000] Serving gRPC on :8080                        \nINFO[0000] Service HTTP on :8090                        \nINFO[0035] Creating new todo                             id=d93f5341-071b-462b-af6e-d397aafbe206 title=\"Another todo\"\nINFO[0035] Getting all todos                             count=1\n```\n\n### Backends\n\nThe server can be configured to use different backends. The default is a simple in-memory backend. More backends to come.\n\n### Ports\n\nThe following ports are used\n\n* 8080 - gRPC\n* 8090 - REST\n\n## Client\n\nThe client user the gRPC API to create and list todos\n\n```\n$ go run client.go \nINFO[0000] Starting app                                 \nINFO[0000] Got todo                                      id=d93f5341-071b-462b-af6e-d397aafbe206 title=\"Another todo\"\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkrizic%2Ftodo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdkrizic%2Ftodo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkrizic%2Ftodo/lists"}