This roadmap is based on roadmap.sh/backend but fully tailored for TypeScript + Node.js.
- How the web works: DNS, HTTP/HTTPS, domain, hosting, CDNs
- Client–server model: requests, responses, headers, status codes
- Learn about REST vs GraphQL vs gRPC
- WebSockets, SSE, long polling for real-time apps
Mini-projects:
- Build a raw Node.js HTTP server (in TS using
ts-node) - Implement a JSON API without frameworks
- TypeScript basics: types, interfaces, enums, generics
- Advanced types: unions, intersections, utility types
- Config:
tsconfig.json, strict mode, module resolution - Tooling:
ts-node,tsc, ESLint + Prettier
Mini-projects:
- Convert a small JS project to TS
- Create a CLI calculator using TypeScript
- Core Node.js modules: fs, http, events, streams
- Express.js (with TS types & middlewares)
- NestJS (structured, enterprise-level backend)
- Fastify (for performance-focused APIs)
Mini-projects:
- REST API with Express + TS
- GraphQL API with Apollo Server + TS
- NestJS task manager API
-
Relational: PostgreSQL, MySQL
-
NoSQL: MongoDB, Redis
-
Querying: SQL joins, indexing, transactions
-
ORMs/ODMs (TypeScript-friendly):
- Prisma (recommended)
- TypeORM
- Mongoose (MongoDB)
Mini-projects:
- Todo API with PostgreSQL + Prisma
- Blog API with MongoDB + Mongoose
- Sessions + cookies (express-session)
- JWT authentication (stateless)
- OAuth2 / Google Login (Passport.js or Auth0 SDK)
- Password hashing (
bcrypt,argon2) - Security headers with
helmet - Input validation with
zodorclass-validator
Mini-projects:
- JWT auth system in Express + TS
- Google OAuth login with Passport.js
- Environment configs: dotenv, cross-env
- Hosting: Railway, Render, Vercel, AWS EC2
- Reverse proxy: Nginx basics
- Docker: Dockerfile + docker-compose for Node.js + Postgres
- CI/CD: GitHub Actions, GitLab CI
Mini-projects:
- Dockerize a NestJS API + Postgres
- Deploy an Express API on Railway/Render
- Logging: Winston, Pino
- Monitoring: Prometheus + Grafana (optional)
- API metrics: response times, error tracking (Sentry)
- Caching: Redis for sessions & queries
- Performance optimization: clustering, PM2
Mini-projects:
- Add Winston logging middleware
- Add Redis caching to an API
- Monolith vs Microservices in TypeScript
- Event-driven architecture (RabbitMQ, Kafka, NATS)
- CQRS and Domain-driven design (DDD) with NestJS
- API Gateway, rate limiting, throttling
- CAP theorem, ACID vs BASE
Mini-projects:
- Event-driven order + notification microservices
- Microservice with gRPC (TS with
grpc-js)
- Unit testing: Jest + ts-jest
- Integration testing: Supertest + Jest
- End-to-end (E2E) tests with Playwright or Cypress
- Code quality: ESLint, Prettier, Husky (pre-commit hooks)
Mini-projects:
- Write Jest unit tests for blog API
- Integration tests for auth system
-
Beginner: URL shortener, Weather API wrapper
-
Intermediate:
- E-commerce API (products, cart, orders, auth)
- Chat backend with WebSockets + Redis
-
Advanced:
- SaaS backend (subscriptions, billing, roles)
- Job queue system (BullMQ + Redis)
backend-roadmap-ts/
├── README.md # This roadmap
├── notes/ # Notes & resources
│ ├── typescript.md
│ ├── nodejs.md
│ ├── databases.md
│ ├── auth.md
│ └── devops.md
├── fundamentals/
│ ├── raw-http-server-ts/
│ └── cli-calculator-ts/
├── express-nest/
│ ├── express-api-ts/
│ ├── graphql-apollo-ts/
│ └── nest-task-manager/
├── databases/
│ ├── prisma-postgres-todo/
│ └── mongoose-blog-api/
├── auth-security/
│ ├── jwt-auth-api/
│ ├── session-auth-api/
│ └── oauth-google/
├── deployment/
│ ├── dockerized-nestjs/
│ ├── nginx-config/
│ └── ci-cd-github-actions/
├── observability/
│ ├── winston-logger/
│ └── redis-caching/
├── system-design/
│ ├── microservices-orders/
│ └── event-driven-notifications/
├── testing/
│ ├── jest-unit-tests/
│ └── supertest-integration/
└── projects/
├── beginner/
│ ├── url-shortener-ts/
│ └── weather-api-ts/
├── intermediate/
│ ├── ecommerce-api-ts/
│ └── chat-backend-ts/
└── advanced/
├── saas-backend-ts/
└── job-queue-bullmq-ts/
1 - Master TypeScript type system and advanced features
1 - Build a RESTful API with Express and TypeScript
2 - Implement authentication and authorization
3 - Integrate with SQL and NoSQL databases
4 - Write comprehensive tests for all components
5 - Containerize application with Docker
6 - Set up CI/CD pipeline
8 - Implement monitoring and logging
9 - Optimize application performance
10 - Deploy to a cloud platform