{"id":23678962,"url":"https://github.com/ryichk/todolist","last_synced_at":"2026-02-14T00:07:55.558Z","repository":{"id":269279561,"uuid":"906867681","full_name":"ryichk/todolist","owner":"ryichk","description":"The TODO application, using Go's Echo framework for the backend API and Remix's SPA mode for the frontend.","archived":false,"fork":false,"pushed_at":"2025-02-01T12:50:48.000Z","size":626,"stargazers_count":0,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-15T16:47:37.087Z","etag":null,"topics":["docker","docker-compose","echo","go","postgresql","react","remix","spa","sqlc","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/ryichk.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}},"created_at":"2024-12-22T06:25:54.000Z","updated_at":"2025-01-26T12:20:41.000Z","dependencies_parsed_at":"2024-12-22T12:21:13.303Z","dependency_job_id":"6b416315-e719-43a1-8b44-2c6b5c201033","html_url":"https://github.com/ryichk/todolist","commit_stats":null,"previous_names":["ryichk/todolist"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryichk%2Ftodolist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryichk%2Ftodolist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryichk%2Ftodolist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryichk%2Ftodolist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryichk","download_url":"https://codeload.github.com/ryichk/todolist/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239720644,"owners_count":19686130,"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","docker-compose","echo","go","postgresql","react","remix","spa","sqlc","typescript"],"created_at":"2024-12-29T16:59:25.495Z","updated_at":"2025-12-30T14:30:13.571Z","avatar_url":"https://github.com/ryichk.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# todolist\n\n## Summary\n\n### Frontend\n\n#### Programming Language\n\n- TypeScript\n\n#### Frameworks\n\n- [Remix](https://remix.run/)\n  - [SPA Mode](https://remix.run/docs/en/main/guides/spa-mode)\n\n### Backend\n\n#### Programming Language\n\n- Go\n\n#### Frameworks\n\n- [Echo](https://github.com/labstack/echo)\n  - Utilizes [air](https://github.com/air-verse/air) for Live Reload\n\n#### DB\n\n- PostgreSQL\n\n### Infrastructure\n\n#### Cloud Vendor\n\n- AWS\n\n#### Tools\n\n- Node.js v22.11.0\n- aws-cdk v2.173.4\n\n## Environment Construction\n\n### 1. Install Docker\n\n### 2. Set environment variables\n\n```sh\ncp .env.sample .env\n```\n\n```sh\ncp client/.env.sample client/.env\n```\n\nSet the Amazon Cognito User Pool ID and Client ID and Cognito domain URL to be handled in the development environment in the environment variables of the `.env` and `client/.env` files.\n\n```.env\nCOGNITO_USER_POOL_ID=\n```\n\n```client/.env\nVITE_COGNITO_USER_POOL_ID=\nVITE_COGNITO_CLIENT_ID=\nVITE_COGNITO_DOMAIN=\n```\n\n### 3. Start the Docker Containers\n\n```sh\nmake up\n```\n\n### 4. Execute DB migration\n\n```sh\nmake migrate_up\n```\n\n## Development Procedure\n\n### Organize Dependencies of Go modules\n\n```sh\nmake tidy\n```\n\n### Code Formatting\n\n```sh\nmake fmt\n```\n\n### Static Analysis\n\n```sh\nmake lint\n```\n\n### Test Code Execution\n\n```sh\nmake test\n```\n\n### Create Migration File\n\nTo make changes to the DB schema, create a file in `api/internal/db/migration` and run migration.\n\n#### Steps\n\n1. Generate migration file (you can do it manually)\n2. Implement DDL\n3. Execute migration\n\n#### Migration File Creation Command\n\n```sh\nmake migrate_create NAME=\"file name\"\n```\n\n### Migration Execution Command\n\n```sh\nmake migrate_up\n```\n\n### Rollback Command for Migration\n\nIf STEP is not passed as an argument, everything will be rolled back.\n\n```sh\nmake migrate_down STEP=1\n```\n\n### DML Implementation\n\nImplement the query in the file `api/internal/db/query`.\n\nReference: https://docs.sqlc.dev/en/latest/howto/select.html\n\nWhen adding a new model, add it to rename in `api/sqlc.yml` so that the App prefix is not attached to the model name.\n\nAfter implementing the query, run the `splc generate` command.\n\n```sh\nmake sqlc_gen\n```\n\n### Model Implementation\n\nthe model generated by the `sqlc generate` command is placed in `api/internal/model`.\n\nThe model implements business logic, etc.\n\n### Request Handler Implementation\n\nThe request handler implementation is placed in `api/internal/handler`.\n\nThe request handler implements request validation, etc.\n\n### Implement Request Routing\n\nImplement request routing in `api/internal/server/router.go`.\n\n## Infrastructure Construction and Deployment Procedures\n\n### Setup\n\n```sh\nmake npm_i_infra-ts\nmake cdk_bootstrap\n```\n\n### Build Frontend Code\n\n```sh\nmake build_client\n```\n\n### Deploy\n\n#### Deploy All Stack\n\n```sh\nmake cdk_deploy_all\n```\n\n#### Deploy Stacks individually\n\n```sh\nmake cdk_deploy STACK=StackName\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryichk%2Ftodolist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryichk%2Ftodolist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryichk%2Ftodolist/lists"}