{"id":21689913,"url":"https://github.com/mbc-net/mbc-todo-sample","last_synced_at":"2026-04-15T08:35:03.787Z","repository":{"id":264414414,"uuid":"893294380","full_name":"mbc-net/mbc-todo-sample","owner":"mbc-net","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-04T09:19:35.000Z","size":576,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-20T12:54:41.273Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/mbc-net.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":"2024-11-24T03:35:22.000Z","updated_at":"2024-12-04T09:20:48.000Z","dependencies_parsed_at":"2024-11-24T05:27:47.485Z","dependency_job_id":"821300fb-4c9b-4d13-8f0d-3596ff313fec","html_url":"https://github.com/mbc-net/mbc-todo-sample","commit_stats":null,"previous_names":["mbc-net/mbc-todo-sample"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mbc-net/mbc-todo-sample","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbc-net%2Fmbc-todo-sample","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbc-net%2Fmbc-todo-sample/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbc-net%2Fmbc-todo-sample/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbc-net%2Fmbc-todo-sample/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mbc-net","download_url":"https://codeload.github.com/mbc-net/mbc-todo-sample/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbc-net%2Fmbc-todo-sample/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31833835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T07:17:56.427Z","status":"ssl_error","status_checked_at":"2026-04-15T07:17:30.007Z","response_time":63,"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":[],"created_at":"2024-11-25T17:28:02.196Z","updated_at":"2026-04-15T08:35:03.759Z","avatar_url":"https://github.com/mbc-net.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![MBC CQRS serverless framework](https://mbc-cqrs-serverless.mbc-net.com/img/mbc-cqrs-serverless.png)\n\n## Description\n\nMBC CQRS serverless framework based on [Nest](https://github.com/nestjs/nest).\n\nTechStack:\n\n- [Nest](https://github/nestjs/nest)\n- TypeScript\n- AWS Serverless\n\n  - API GW\n  - Lambda\n  - Step Functions\n  - EventBridge\n  - DynamoDB\n\n- RDS - PostgreSQL\n- Serverless fw \u0026\u0026 Localstack for local development\n\n## Prepare\n\n- [Nodejs](https://nodejs.org/en/download)\n- [JQ cli](https://jqlang.github.io/jq/download/)\n- [AWS cli](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)\n- [Docker](https://docs.docker.com/engine/install/)\n\n## Installation\n\n```bash\n$ cp .env.local .env\n$ npm install\n```\n\n## Running the app\n\n```bash\n# development build\n$ npm run build\n\n# docker, open in other terminal session\n$ npm run offline:docker\n\n# migrate tables, open in other terminal session\n$ npm run migrate\n\n# copy dynamodb stream arn to `.env` file\n      # LOCAL_DDB_MASTER_STREAM=arn:aws:dynamodb:ddblocal:000000000000:table/local-demo-master-command/stream/2024-01-02T03:07:49.349\n\n# serverless, open in other terminal session\n$ npm run offline:sls\n```\n\n- After successfully running\n\n```bash\nDEBUG[serverless-offline-sns][adapter]: successfully subscribed queue \"http://localhost:9324/101010101010/notification-queue\" to topic: \"arn:aws:sns:ap-northeast-1:101010101010:CqrsSnsTopic\"\nOffline Lambda Server listening on http://localhost:4000\nserverless-offline-aws-eventbridge :: Plugin ready\nserverless-offline-aws-eventbridge :: Mock server running at port: 4010\nStarting Offline SQS at stage dev (ap-northeast-1)\nStarting Offline Dynamodb Streams at stage dev (ap-northeast-1)\n\nStarting Offline at stage dev (ap-northeast-1)\n\nOffline [http for lambda] listening on http://localhost:3002\nFunction names exposed for local invocation by aws-sdk:\n           * main: serverless-example-dev-main\nConfiguring JWT Authorization: ANY /{proxy+}\n\n   ┌────────────────────────────────────────────────────────────────────────┐\n   │                                                                        │\n   │   ANY | http://localhost:3000/api/public                               │\n   │   POST | http://localhost:3000/2015-03-31/functions/main/invocations   │\n   │   ANY | http://localhost:3000/swagger-ui/{proxy*}                      │\n   │   POST | http://localhost:3000/2015-03-31/functions/main/invocations   │\n   │   ANY | http://localhost:3000/{proxy*}                                 │\n   │   POST | http://localhost:3000/2015-03-31/functions/main/invocations   │\n   │                                                                        │\n   └────────────────────────────────────────────────────────────────────────┘\n\nServer ready: http://localhost:3000 🚀\n\n```\n\n## Helpers\n\n```bash\n# prisma command\n$ npx prisma\n```\n\n## Test\n\n```bash\n# unit tests\n$ npm run test\n\n# e2e tests\n$ npm run test:e2e\n\n# test coverage\n$ npm run test:cov\n```\n\n## Before use Keycloak\n\nGo to http://localhost:8180/admin/master/console/#/master/clients\n\n- create a new client\n\n  - Client type: `OpenID Connect`\n  - Client ID: `hello-world`\n  - Valid redirect URIs: `*`\n  - Web origins: `*`\n\n- go to Client scopes tab, then add new mapper\n\n  - Mapper type: `Audience`\n  - Name: `hello-world`\n  - Included Client Audience: `hello-world`\n  - Add to access token: `true`\n\n- Ref: https://www.keycloak.org/getting-started/getting-started-docker\n\n### Update `frontend/aws-export.js`\n\n```bash\n$ cp frontend/aws-export.local.js frontend/src/aws-export.js\n```\n\n## Step function execution\n\n```bash\n$ aws stepfunctions --endpoint-url http://localhost:8083 start-execution --state-machine-arn arn:aws:states:ap-northeast-1:101010101010:stateMachine:foo1\n```\n\n## Endpoints\n\n- api gw: http://localhost:3000\n- lambda: http://localhost:4000\n- lambda http: http://localhost:3002\n- step functions: http://localhost:8083\n- dynamodb: http://localhost:8000\n- dynamodb admin: http://localhost:8001\n- sns: http://localhost:4002\n- sqs: http://localhost:9324\n- sqs admin: http://localhost:9325\n- localstack: http://localhost:4566\n  - S3\n- appsync: http://localhost:4001\n- cognito: http://localhost:9229\n- eventbridge: http://localhost:4010\n- ses email: http://localhost:8005\n- prisma studio: http://localhost:5000\n  - run `npx prisma studio` to open studio web\n\n## Nestjs Debug mode\n\nRun the following cmd to open nestjs debug mode\n\n```\n$ npm run start:repl\n```\n\n- Ref: https://docs.nestjs.com/recipes/repl\n\n## Documentation\n\nVisit https://mbc-cqrs-serverless.mbc-net.com/ to view the full documentation.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbc-net%2Fmbc-todo-sample","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmbc-net%2Fmbc-todo-sample","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbc-net%2Fmbc-todo-sample/lists"}