A simple REST API built with TypeScript, Express, TypeORM, PostgreSQL, Redis, and MongoDB.
- User registration and authentication (JWT)
- Profile routes
- Todo CRUD routes
- File upload route for user avatar
- Queue consumer support with Redis/Bull
- Node.js + TypeScript
- Express
- TypeORM + PostgreSQL
- Redis (cache/queue)
- MongoDB
- Jest + Supertest
- Node.js
- npm
- Docker + Docker Compose (recommended for local services)
- Install dependencies:
npm install- Start local infrastructure (PostgreSQL, MongoDB, Redis):
docker-compose up -d- Configure environment variables (for example, in a
.envfile):
TYPEORM_HOST=localhost
TYPEORM_PORT=5432
TYPEORM_USERNAME=username
TYPEORM_PASSWORD=password
TYPEORM_DATABASE=todo
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
MAIL_HOST=
MAIL_PORT=
MAIL_SECURE=
MAIL_USER=
MAIL_PASS=
MAIL_FROM_NAME=
MAIL_FROM_EMAIL=- Run database migrations:
npm run migration:runStart API server (port 3333):
npm run devOptional queue consumer:
npm run queue
# or
npm run consumernpm test— run test suitenpm run build— compile/transpile todistnpm run start— start server with ts-nodenpm run dev— start server with nodemonnpm run migration:generate -- <name>— generate migrationnpm run migration:run— run migrationsnpm run migration:create -- <name>— create empty migrationnpm run migration:revert— revert migrationnpm run migration:show— show migrations status
Detailed request/response examples are in:
docs/concepts.mddocs/auth.mddocs/create-todo.mddocs/update-todo.mddocs/delete-todo.md