π© Node.js + Next.js
Currently available in Islamabad
JavaScript on both the server and the client is the most productive full-stack setup available today β and Node.js + Next.js is the most mature, most widely deployed expression of that idea. The combination powers Vercel, Linear, Notion, Shopify Storefront, and thousands of SaaS products and enterprise applications across the world. It is the stack that modern product companies default to when they want to ship fast without sacrificing quality.
This course replaces the outdated MERN stack pattern β MongoDB-first, plain React, no TypeScript discipline β with the architecture that professional teams actually use in 2025: Node.js and Express on the backend with TypeScript, PostgreSQL with Prisma ORM for a type-safe data layer, and Next.js 15 (App Router) on the frontend. You will build a real production application across both layers, with proper testing, observability, and deployment from day one.
π‘ Why Node.js + Next.js in 2025
- Full-stack TypeScript: one language, one type system, shared types between backend and frontend β no translation layer, no type mismatches between API and UI
- Next.js 15 App Router with React Server Components is the most significant shift in frontend architecture since hooks β and it is now stable and production-proven
- Prisma ORM gives you auto-generated TypeScript types from your database schema β the database becomes type-safe end-to-end
- Node.js's non-blocking I/O model handles thousands of concurrent connections efficiently β ideal for real-time features, streaming, and high-concurrency APIs
- The npm ecosystem is the largest package registry in existence β more integrations, libraries, and tooling than any other platform
- The most in-demand JavaScript stack for remote work: the combination of Next.js, Node.js, TypeScript, and Prisma appears in the majority of modern full-stack job postings
- Shared code between server and client: validation schemas (Zod), types, utilities, and constants live once and are used everywhere
π Module Breakdown
Week 1 β Phase 0: TypeScript & Node.js Engineering Foundations
TypeScript is the foundation of everything in this course. This phase is not "TypeScript basics" β it covers the type system features and Node.js platform knowledge that production full-stack applications depend on.
- TypeScript strict mode: enabling all strict flags and understanding what each one enforces
- Type inference: letting TypeScript infer types correctly β when to annotate and when to let inference do the work
- Union types, intersection types, discriminated unions, and type narrowing: the patterns that make TypeScript useful in real code
- Generics in depth: writing generic functions, generic interfaces, generic classes, and constrained generics
- Utility types: Partial, Required, Pick, Omit, Record, Exclude, Extract, ReturnType, Parameters, and Awaited
- Template literal types and conditional types: advanced type manipulation for building expressive type-safe APIs
- Declaration merging and module augmentation: extending third-party library types
- Zod: runtime schema validation with inferred TypeScript types β the standard for validating untrusted data at system boundaries
- Node.js architecture: the event loop, libuv, the call stack, the task queue, and microtask queue β understanding non-blocking I/O
- Node.js streams: Readable, Writable, Transform, and Duplex streams β processing large data without loading it all into memory
- Worker threads: CPU-bound work in Node.js without blocking the event loop
- Node.js built-in modules: fs/promises, path, crypto, os, child_process, and cluster
- Modern tooling: tsx for TypeScript execution, tsup for bundling, Vitest for testing, and ESLint with typescript-eslint
- Monorepo setup with pnpm workspaces: sharing TypeScript types, Zod schemas, and utilities between the Node.js backend and Next.js frontend
- Environment variable management: dotenv, t3-env for type-safe environment variables validated at startup
Week 1β2 β Phase 1: Node.js Backend with Express & Fastify
Both major Node.js web frameworks are covered β Express for its ubiquity and ecosystem size, and Fastify for its schema-first, high-performance approach. Production API patterns are taught with TypeScript throughout.
Express with TypeScript:
- Express architecture: request, response, middleware chain, Router, and the application lifecycle
- Typed request and response: using TypeScript generics with express.Request and express.Response
- Routing: route parameters, query strings, route groups with express.Router, and controller organisation
- Middleware: writing typed middleware, error-handling middleware, and the middleware execution order
- Request validation with Zod: validating body, params, and query with a reusable validateRequest middleware
- Global error handling: the 4-argument error middleware, AppError class, and consistent error response shape
- express-async-errors: eliminating try-catch boilerplate in async route handlers
Fastify with TypeScript:
- Fastify architecture: schema-first design, the plugin system, decorators, and hooks
- JSON Schema validation: defining request and response schemas β Fastify validates and serialises automatically
- Fastify plugins: the encapsulation model β scoping routes, plugins, and hooks to sub-contexts
- TypeBox: TypeScript-first JSON Schema builder that gives compile-time and runtime type safety together
- Fastify vs Express: when to choose each β throughput benchmarks, ecosystem maturity, and team familiarity
Production API patterns (framework-agnostic):
- Project structure: feature-based folder organisation β routes, controllers, services, repositories, and domain types per feature
- Dependency injection in Node.js: constructor injection, tsyringe for lightweight DI, and manual composition root patterns
- Configuration management: type-safe configuration with t3-env or convict β validating all environment variables at startup
- Authentication: JWT access tokens and refresh tokens β signing, verifying, rotating, and revoking
- Password hashing with bcrypt and Argon2: implementation and the security trade-offs between them
- Role-based access control: permission middleware, resource ownership checks, and policy-based authorisation
- Rate limiting: express-rate-limit and @fastify/rate-limit β per-IP, per-user, and sliding window strategies
- CORS: configuration for Next.js SPA clients, preflight handling, and credential requests
- HTTP security headers: helmet for Express and @fastify/helmet β CSP, HSTS, and X-Frame-Options
- File uploads: multipart form handling with multer (Express) or @fastify/multipart, streaming to S3
- Email: sending transactional email with Nodemailer and Resend from Node.js
- Graceful shutdown: draining in-flight requests and closing database connections on SIGTERM
- OpenAPI documentation: generating Swagger docs from Zod schemas with zod-to-openapi or from Fastify schemas automatically
- API versioning: URI prefix versioning and managing multiple API versions in one codebase
- Integration testing with Supertest and Vitest: testing the full HTTP stack with a real database via testcontainers
Week 2 β Phase 2: Database Layer β Prisma, PostgreSQL & Redis
Prisma transforms the database experience in TypeScript β your schema becomes the source of truth for both the database structure and the TypeScript types. This phase covers Prisma in production depth, alongside Redis for caching and real-time use cases.
Prisma ORM in depth:
- Prisma architecture: schema.prisma, the Prisma Client, Prisma Migrate, and Prisma Studio
- Schema definition: models, fields, scalar types, enums, and the @id, @unique, @default, @relation directives
- Relations: one-to-one, one-to-many, many-to-many (explicit and implicit), and self-referential relations
- Prisma Migrate: dev migrations, production migration workflow with prisma migrate deploy, and migration squashing
- Prisma Client CRUD: findUnique, findFirst, findMany, create, createMany, update, updateMany, upsert, delete, deleteMany
- Filtering and sorting: where clauses, nested filters, full-text search with PostgreSQL, and orderBy with multiple fields
- Pagination: cursor-based pagination with take/skip/cursor β the production pattern for large datasets
- Select and include: fetching only needed fields, including relations, and avoiding over-fetching
- Transactions: prisma.$transaction() for interactive transactions and batch transactions
- Prisma middleware and extensions: logging queries, soft deletes, automatic timestamps, and row-level security
- Raw SQL with Prisma: prisma.$queryRaw and prisma.$executeRaw with parameterised queries for complex queries
- Connection pooling: PgBouncer and Prisma Accelerate for serverless connection management
- Prisma with PostgreSQL-specific features: JSON fields, array types, and full-text search vectors
- Drizzle ORM as an alternative: the lightweight, SQL-first TypeScript ORM β when it is a better fit than Prisma
Redis with ioredis:
- Redis data structures from Node.js: strings, hashes, lists, sets, sorted sets, and streams
- Caching patterns: cache-aside, write-through, and TTL-based invalidation in Express middleware
- Session storage: storing Express sessions in Redis with connect-redis
- Pub/sub with Redis: real-time messaging between Node.js processes β horizontal scaling of WebSocket connections
- Distributed locking with Redlock: preventing race conditions in distributed Node.js deployments
- BullMQ: the production job queue for Node.js β workers, queues, delayed jobs, job priorities, and the BullMQ Board dashboard
Week 2β3 β Phase 3: Next.js 15 β App Router, Server Components & Full-Stack Patterns
Next.js 15 with the App Router represents the most significant architectural shift in React's history. React Server Components change the fundamental model of how components render, where data fetching happens, and what gets sent to the browser. This phase teaches App Router correctly β not as a migration from Pages Router, but as its own coherent architecture.
App Router fundamentals:
- App Router vs Pages Router: the architectural difference β server-first rendering vs client-first rendering
- React Server Components (RSC): components that render on the server and never ship JavaScript to the browser β data fetching, database access, and secrets in server components
- Client components: the "use client" directive, when components need interactivity, and the boundary between server and client
- The component model: server components can render client components, but not vice versa β understanding the composition rules
- File system routing: page.tsx, layout.tsx, loading.tsx, error.tsx, not-found.tsx, and route.ts β every special file and its purpose
- Nested layouts: persistent UI across route segments β sidebar navigation, dashboard shells, and authentication wrappers
- Route groups: organising routes without affecting URL structure β (auth), (dashboard), (marketing) patterns
- Parallel routes and intercepting routes: advanced layout patterns β modal routes, split views, and conditional rendering
- Dynamic routes: [id], [...slug], and [[...slug]] β optional catch-all routes and generateStaticParams
Data fetching and caching:
- Data fetching in server components: async/await directly in components β no useEffect, no loading state boilerplate
- Next.js fetch cache: the extended fetch API with cache options β force-cache, no-store, and revalidate
- React cache(): deduplicating identical requests within a single render pass
- unstable_cache: caching the result of any async function β database queries, external API calls
- On-demand revalidation: revalidatePath() and revalidateTag() for invalidating cached data on mutations
- Streaming with Suspense: streaming server-rendered HTML to the browser as it becomes available β skeleton UIs while data loads
- TanStack Query in Next.js: client-side data fetching, caching, and optimistic updates for interactive features
Server Actions:
- Server Actions: calling server-side functions directly from client components and forms β no API endpoint needed
- Form handling with Server Actions: the native form action pattern β progressive enhancement and no JavaScript fallback
- useActionState: managing Server Action state (pending, result, error) in client components
- useOptimistic: optimistic UI updates that revert if the Server Action fails
- Server Action security: authentication checks, input validation with Zod, and CSRF protection
- Revalidating after mutations: calling revalidatePath() and revalidateTag() inside Server Actions
- When to use Server Actions vs REST API: the decision framework β same-origin vs cross-origin, mobile clients, and team conventions
Authentication and middleware:
- NextAuth.js v5 (Auth.js): the standard authentication library for Next.js β providers, adapters, sessions, and JWT
- NextAuth.js with the Node.js backend: using the Express JWT API as the credentials provider
- Next.js Middleware: running code at the edge before requests β authentication guards, redirects, and A/B testing
- Protected routes: redirecting unauthenticated users in middleware, layout components, and server components
- Role-based UI: rendering different content based on session roles β server-side and client-side approaches
UI, forms, and performance:
- Tailwind CSS v4: utility-first styling, the new CSS-based configuration, component variants with cva()
- shadcn/ui: copy-paste, accessible, unstyled components built on Radix UI β the standard Next.js component library
- React Hook Form with Zod: client-side form validation with shared Zod schemas from the monorepo
- TanStack Table: server-side sorted, filtered, and paginated data tables from the Node.js API
- next/image: automatic image optimisation, lazy loading, and WebP conversion
- next/font: self-hosted fonts with zero layout shift
- Metadata API: dynamic SEO metadata from server components β title templates, Open Graph, and Twitter cards
- Bundle analysis: @next/bundle-analyzer for identifying large dependencies and code-splitting opportunities
Week 3β4 β Phase 4: Real-Time, Background Jobs & Advanced Patterns
Production applications need more than request-response cycles. This phase covers WebSockets for real-time features, BullMQ for background job processing, and the advanced Node.js patterns that high-traffic applications require.
Real-time with WebSockets and SSE:
- WebSockets in Node.js: the ws library β server setup, connection management, message handling, and heartbeats
- Socket.IO: rooms, namespaces, acknowledgements, and horizontal scaling with Redis adapter
- Server-Sent Events (SSE): unidirectional server-to-client streaming β simpler than WebSockets for one-way real-time updates
- Real-time from Next.js: consuming WebSocket connections and SSE streams in client components
- Presence and collaboration features: tracking connected users and broadcasting state changes
Background jobs with BullMQ:
- BullMQ architecture: queues, workers, jobs, and the Redis-backed persistence model
- Job types: immediate jobs, delayed jobs, repeating jobs (cron), and prioritised jobs
- Concurrency control: limiting parallel job execution per worker and across multiple workers
- Job retries and backoff: exponential backoff, max attempts, and the failed job lifecycle
- Job progress: reporting and tracking job progress for long-running tasks
- BullMQ flows: parent-child job relationships for complex multi-step workflows
- BullMQ Board: the dashboard for monitoring queue health, job history, and worker status
Advanced Node.js patterns:
- tRPC: end-to-end type-safe APIs without code generation β defining procedures, routers, and context
- tRPC with Next.js App Router: server-side calling, client-side with TanStack Query, and React Server Components integration
- GraphQL with Node.js: Pothos for code-first schema building, Yoga server, and DataLoader for N+1 prevention
- Event-driven architecture in Node.js: EventEmitter patterns, domain events, and the EventBus abstraction
- Kafka with kafkajs: producers, consumers, consumer groups, and exactly-once semantics in Node.js
- CQRS in Node.js: separating read models from write models β practical implementation without over-engineering
Week 4β5 β Phase 5: Testing, Observability & Production Readiness
The final phase covers a comprehensive testing strategy across both layers, the observability stack for production debugging, and everything needed to run a Node.js + Next.js application reliably at scale.
Testing strategy:
- Vitest: the Vite-native test runner β fast, Jest-compatible, and first-class TypeScript support
- Unit testing: testing services, utilities, and business logic in isolation with mocked dependencies
- Integration testing: testing Express/Fastify routes with Supertest against a real PostgreSQL database via testcontainers-node
- Testing Prisma: seeding a test database, resetting between tests, and isolating test state
- Testing Next.js Server Components: React's new testing utilities for server components with MSW for mocking fetch
- Testing Next.js Client Components: React Testing Library with userEvent for interaction testing
- Testing Server Actions: calling Server Actions directly in tests and asserting database state
- End-to-end testing with Playwright: full browser automation β login flows, form submissions, and critical user journeys
- MSW (Mock Service Worker): intercepting API requests in both browser and Node.js test environments
- Test coverage: generating coverage reports and setting meaningful coverage thresholds in CI
Observability:
- Structured logging with Pino: the fastest Node.js logger β JSON output, log levels, child loggers, and request context
- Request logging middleware: automatic request/response logging with timing, status codes, and correlation IDs
- OpenTelemetry Node.js SDK: automatic instrumentation for Express/Fastify, Prisma, and HTTP clients
- Distributed tracing: propagating trace context across microservices and Next.js frontend calls
- Prometheus metrics with prom-client: custom counters, gauges, histograms, and the /metrics endpoint
- Next.js OpenTelemetry integration: tracing Next.js App Router request cycles with the instrumentation.ts hook
- Error tracking with Sentry: capturing unhandled errors, performance traces, and session replays in both Node.js and Next.js
Performance and production hardening:
- Node.js cluster mode: utilising all CPU cores with the cluster module and PM2
- Memory leak detection: identifying leaks with --inspect, Chrome DevTools heap snapshots, and clinic.js
- Response compression: gzip and Brotli compression in Express and Fastify
- Database query optimisation: using EXPLAIN ANALYZE in PostgreSQL, Prisma query logging, and identifying slow queries
- Next.js performance: Core Web Vitals, Lighthouse CI, and the Next.js Speed Insights integration
- Docker for Node.js: multi-stage Dockerfiles with non-root users, health checks, and minimal production images
- Docker Compose: full local stack β Node.js API, Next.js, PostgreSQL, Redis, and BullMQ Board
- GitHub Actions CI/CD: TypeScript typecheck, ESLint, Vitest, Playwright, Docker build, and deployment pipeline
π Optional Add-On Modules
(2 weeks each β additional fee per module. Can be taken individually or combined.)
Add-On 1: AWS Deployment Track
Deploy Node.js and Next.js across the full AWS ecosystem β from serverless Lambda functions to containerised ECS services, with managed databases, queues, and CDN delivery.
- AWS Lambda with Node.js: the Node.js 20.x runtime, handler patterns, cold start mitigation, and bundling with esbuild
- Next.js on AWS Lambda: deploying Next.js with the OpenNext adapter β full App Router support on Lambda + CloudFront
- AWS API Gateway: HTTP API integration with Lambda β routing, CORS, and custom authorisers
- ECS Fargate: containerised Node.js Express/Fastify API β task definitions, service auto-scaling, and blue/green deployments
- Next.js on ECS: self-hosting the Next.js server on Fargate when OpenNext is not sufficient
- AWS RDS (PostgreSQL): managed database β connection string configuration, Prisma Migrate in production, and RDS Proxy for Lambda connection pooling
- ElastiCache (Redis): managed Redis for BullMQ, session storage, and Socket.IO scaling adapter
- Amazon SQS: BullMQ alternative for serverless architectures β SQS consumer in Lambda
- AWS S3: file storage with the AWS SDK v3 β presigned uploads, CloudFront CDN for public assets
- AWS SES: transactional email from Nodemailer and Resend via SES
- AWS Secrets Manager: injecting secrets into ECS tasks and Lambda functions
- CloudFront: CDN for Next.js static assets and API caching β cache invalidation on deploy
- Infrastructure as Code with AWS CDK (TypeScript): provisioning the entire stack in TypeScript β the most natural IaC experience for Node.js teams
- GitHub Actions: build, test, push to ECR, deploy to ECS or Lambda on merge β full CI/CD automation
- CloudWatch: structured Pino log ingestion, custom metrics, and alarms for error rates and queue depth
Add-On 2: Google Cloud Deployment Track
Deploy Node.js and Next.js on Google Cloud Platform β with Cloud Run as the primary platform for its clean serverless container model and tight integration with GCP services.
- Cloud Run with Node.js: containerised Express/Fastify on Cloud Run β scale-to-zero, traffic splitting, and revision management
- Next.js on Cloud Run: deploying the Next.js server as a container on Cloud Run
- Cloud Run Jobs: running BullMQ workers and scheduled Node.js tasks as Cloud Run Jobs
- Cloud SQL (PostgreSQL): managed PostgreSQL β Cloud SQL Auth Proxy for secure connections, Prisma configuration
- Memorystore (Redis): managed Redis for BullMQ and Socket.IO Redis adapter
- Cloud Storage: file storage from Node.js using the Google Cloud Storage client library
- Cloud Tasks: serverless task queue for background processing without a persistent Redis queue
- Cloud Pub/Sub: event-driven messaging between Node.js services on GCP
- Firebase with Node.js: Firestore for real-time data, Firebase Auth from the Admin SDK, and Firebase Cloud Messaging for push notifications
- Secret Manager: loading secrets into Cloud Run services at runtime
- Artifact Registry: building and storing Node.js Docker images
- Cloud Build: CI/CD β typecheck, test, build, push, and deploy to Cloud Run
- Terraform on GCP: provisioning Cloud Run, Cloud SQL, Memorystore, and Pub/Sub with reusable modules
- Cloud Monitoring: Pino structured logs, custom OpenTelemetry metrics, and uptime checks
Add-On 3: Azure Deployment Track
Deploy Node.js and Next.js on Microsoft Azure β relevant for engineers working with enterprise clients in the Microsoft ecosystem or teams already standardised on Azure.
- Azure Container Apps: serverless containers for Node.js Express and Next.js β scale rules, Dapr sidecar integration
- Azure App Service for Node.js: PaaS deployment β deployment slots, auto-scaling, and ZIP deploy
- Azure Functions with Node.js: serverless event-driven functions β HTTP triggers, timer triggers, and Service Bus triggers
- Azure Database for PostgreSQL: managed PostgreSQL β Prisma configuration and connection security
- Azure Cache for Redis: managed Redis for BullMQ, caching, and Socket.IO adapter
- Azure Service Bus: message queuing for Node.js microservices β queues, topics, and subscriptions
- Azure Event Hubs with Node.js: high-throughput event streaming β Kafka-compatible protocol support
- Azure Blob Storage: file storage from Node.js using the Azure SDK
- Azure Static Web Apps: deploying Next.js as a hybrid static/server app with Azure's Next.js runtime
- Azure API Management: API gateway for Node.js APIs β rate limiting, transformation, and developer portal
- Azure Key Vault with Managed Identity: zero-secret deployments for Node.js services
- Infrastructure with Bicep: provisioning Container Apps, databases, Service Bus, and storage
- Azure DevOps Pipelines: CI/CD for Node.js and Next.js β build, test, push to ACR, and deploy
- Azure Monitor and Application Insights: OpenTelemetry integration, distributed traces, and performance dashboards
Add-On 4: SaaS & Monetisation Track
Node.js and Next.js are the most popular stack for building SaaS products β the combination of TypeScript end-to-end, Server Actions for fast form handling, and the rich npm ecosystem for payments and billing makes it the default choice. This add-on covers everything needed to ship a commercial SaaS product.
- SaaS architecture: multi-tenancy patterns in Node.js + Prisma β row-level isolation with tenantId, schema-per-tenant, and database-per-tenant
- Subdomain routing in Next.js: identifying tenants by subdomain using Next.js Middleware and wildcard domains on Vercel
- Stripe integration with Node.js: the Stripe Node.js SDK β customers, products, prices, and one-time payments
- Subscription billing with Stripe: Checkout Sessions, Customer Portal, subscription lifecycle management
- Stripe webhooks in Node.js: handling payment_intent.succeeded, customer.subscription.updated, and invoice.payment_failed reliably with idempotency keys
- Usage-based billing: reporting usage to Stripe Meter and billing customers for metered consumption
- Feature flags and plan gating: restricting access to features based on the current subscription plan
- Trial periods: 14-day trials, trial expiry flows, and conversion email sequences
- Team and organisation models: inviting members, roles within a team, and billing at the organisation level
- User impersonation: support staff logging in as a customer for debugging β with audit trail
- Onboarding flows: multi-step onboarding with Server Actions and Next.js routing β persisting incomplete state
- Admin dashboard: system metrics, user management, and billing overview built with Server Components and TanStack Table
- Dunning management: automated retry logic, payment failure emails, and subscription pause/cancel flows
- Analytics and metrics: tracking user activity, feature usage, and MRR with a Prisma-backed analytics schema
Add-On 5: AI Integration Track
Node.js and Next.js are first-class platforms for AI-powered applications β the Vercel AI SDK is built specifically for this stack, and the TypeScript ecosystem provides the best tooling for working with LLM APIs in a type-safe way.
- Vercel AI SDK: the standard AI SDK for Node.js and Next.js β unified interface for OpenAI, Anthropic, Google, and open-source models
- streamText and generateText: generating and streaming LLM responses in Node.js route handlers and Next.js Server Actions
- useChat and useCompletion: the Vercel AI SDK React hooks for building streaming chat UIs with minimal boilerplate
- Structured output with generateObject: forcing LLMs to return typed objects validated by Zod schemas
- OpenAI Node.js SDK: direct API access for cases beyond the Vercel AI SDK β Assistants API, Batch API, and fine-tuning
- Anthropic SDK for Node.js: Claude API access β tool use, extended thinking, and vision
- Tool calling in Node.js: defining tools with Zod schemas, executing tool calls, and returning results to the model
- LLM agents with the AI SDK: multi-step reasoning loops, tool orchestration, and max steps control
- Embeddings in Node.js: generating embeddings with the Vercel AI SDK and storing in PostgreSQL with pgvector
- pgvector with Prisma: the prisma-pgvector extension for vector similarity search β storing embeddings in Prisma models
- RAG pipeline in Node.js: document ingestion, chunking, embedding generation, pgvector storage, and retrieval as Express middleware and BullMQ jobs
- Pinecone Node.js client: integrating a managed vector database for larger-scale RAG deployments
- Semantic caching with Redis: caching LLM responses for semantically similar queries to reduce cost and latency
- AI features in Next.js Server Actions: calling LLM APIs from Server Actions β streaming to the UI, storing results in the database
- Rate limiting and cost control: per-user token budgets, spend tracking in Prisma, and circuit breakers for LLM calls
- AI evaluation with the AI SDK: testing LLM output quality, regression testing prompts, and CI integration
Add-On 6: Microservices & Event-Driven Architecture Track
Scale beyond the monolith β this add-on covers decomposing a Node.js application into independently deployable services that communicate through events, with the tooling to operate them reliably.
- Microservice decomposition: identifying service boundaries in a Node.js monolith β strangler fig pattern and incremental extraction
- Service communication: synchronous (HTTP/tRPC/gRPC) vs asynchronous (Kafka/RabbitMQ) β decision framework
- gRPC with Node.js: @grpc/grpc-js, protobuf definitions with @bufbuild/buf, and generated TypeScript clients with ts-proto
- tRPC across services: using tRPC for inter-service communication with full type safety β no code generation
- Kafka with kafkajs: producers, consumer groups, exactly-once semantics, schema registry with Avro
- RabbitMQ with amqplib: exchanges, queues, bindings, acknowledgements, and dead-letter queues
- Transactional outbox pattern in Node.js + Prisma: reliably publishing events after database commits
- API Gateway with Node.js: building a custom gateway with Express or using NGINX β routing, auth, and rate limiting
- Service discovery: static configuration vs DNS-based discovery vs service mesh (Consul)
- Distributed tracing across services: OpenTelemetry trace context propagation over HTTP and Kafka
- Circuit breaker and retry with Polly for JS (cockatiel): resilience patterns for inter-service HTTP calls
- NX monorepo: managing multiple Node.js microservices and the Next.js frontend in a single repository with shared libraries
- Contract testing with Pact: ensuring API compatibility between services without end-to-end tests
π Schedule & Timings
Choose one group only based on your availability. Max 5 candidates per group to ensure individual attention and hands-on support.
Weekday Groups:
- Group 1: MonβWed, 10 AM β 1 PM
- Group 2: MonβWed, 4 PM β 7 PM
Weekend Groups:
- Group 3: Sat & Sun, 10 AM β 2 PM
- Group 4: Sat & Sun, 4 PM β 8 PM
π Location: In-house training in Islamabad
π± Online option may be arranged for out-of-city participants
π οΈ Core Tools & Technologies
- Runtime: Node.js 22 LTS, TypeScript 5 strict mode
- Backend Frameworks: Express, Fastify
- ORM & Database: Prisma ORM, Drizzle ORM (reference), PostgreSQL, Redis (ioredis)
- Validation: Zod, t3-env
- Background Jobs: BullMQ, node-cron
- Real-time: Socket.IO, ws, Server-Sent Events
- Frontend: Next.js 15 App Router, React 19, TypeScript, Tailwind CSS v4, shadcn/ui, TanStack Query, TanStack Table, React Hook Form, NextAuth.js v5
- API Layer: tRPC, REST, GraphQL (Pothos + Yoga)
- Testing: Vitest, Supertest, React Testing Library, Playwright, MSW, testcontainers-node
- Observability: Pino, OpenTelemetry Node.js SDK, prom-client, Sentry
- DevOps: Docker (multi-stage), Docker Compose, GitHub Actions, pnpm workspaces
- Tooling: ESLint (typescript-eslint), Prettier, Husky, lint-staged, tsx, tsup
β Prerequisites
- Comfortable with JavaScript (ES2020+ β async/await, destructuring, modules)
- Basic understanding of how HTTP and REST APIs work
- Familiar with SQL basics and relational database concepts
- Basic React knowledge helpful but not required for the Next.js section
- No prior TypeScript or Node.js experience required
π― Who This Is For
- JavaScript developers who want to build full-stack applications properly with TypeScript
- MERN stack developers who want to modernise to the current industry standard
- Frontend developers who want to own the backend layer with the same language they already know
- Engineers targeting remote full-stack roles at product companies and SaaS startups
- Developers who want to build and ship their own SaaS products
π³ Course Fee & Booking
- β Core Program Duration: 5 Weeks
- β Each Add-On Module: 2 additional weeks (additional fee per module)
- π¦ Available Add-Ons: AWS Deployment Β· Google Cloud Β· Azure Β· SaaS & Monetisation Β· AI Integration Β· Microservices & Event-Driven
- π Seats: 5 only per group