A Todo application built with NestJS, Express, Vue, and MongoDB, running in a Dockerized microservice architecture. This app is still in progress and you can see the ROADMAP https://roadmap.sh/projects/todo-list-api
To generate key pair that will be used for generating Json Web Token with RS512, you may either generate key manually by yourself by running openssl or run the script.
node generate-keypair.mjs
# Or
bun generate-keypair.mjsnode scripts/prerequisite.mjs
# Or
bun scripts/prerequisite.mjs- Docker (Docker Compose recommended)
- Bun (preferred) or Node.js
- Docker (for running dependent services like Mongo, Redis, RabbitMQ, Postgres)
- api → Main API gateway
- auth_service → Authentication + Redis session store
- todo_service → Todo CRUD with MongoDB + RabbitMQ queue
- web-app → Vue frontend
- auth_db → Postgres for auth service
- todo_db → MongoDB for todos
- redis → Caching/session storage
- rabbitmq → Messaging/queueing
git clone https://github.com/happer64bit/toolydooly.git
cd toolydoolybun install
bun devdocker compose up auth_db todo_db redis rabbitmq smtp -ddocker-compose up --buildFrontend → http://localhost:4173
API → http://localhost:3001
Auth Service → http://localhost:3002
Todo Service → http://localhost:3003
You’ll need a .env file in the root:
NODE_ENV=development
TODO_DATABASE_URL=mongodb://todo_user:todo_pass@todo_db:27017/todo_db?authSource=admin
AUTH_DATABASE_URL=postgres://auth_user:auth_pass@auth_db:5432/auth_db
REDIS_HOST=redis
REDIS_PASSWORD=redis
QUEUE_URL=amqp://rabbitmq:rabbitmq@rabbitmq:5672- Use Bun for faster dev cycles, but Node.js works fine.
- Each service has its own
Dockerfileunder/apps. - Database state is persisted in Docker volumes.