Node.JS (TypeScript)
Build real HTTP APIs in Node, one skill at a time. Easy → Hard: routing, validation, responses, middleware, data access — up to auth, caching, jobs, concurrency, transactions, streaming, resilience. Every challenge is API-only and test-driven: implement the missing piece until the supertest suite (in-memory SQLite, seeded) passes.
Routing & Controllers
Map each verb and path to its handler, resolve ids from the URL, and return the status that matches the outcome - created, updated, deleted, not-found, method-not-allowed. Covers nested resources and route precedence.
Bike Hire Endpoints
Course Catalogue Nested Routes
Analytics Report Route Precedence
Meeting Room Booking Endpoints
Request Data & Validation
Read and check what comes in —-query params, JSON bodies, request headers. Apply defaults, coerce types, clamp limits, and reject bad input with the status that names the bad field (400/422) or header problem (401/403/415). Covers paging/filters/sort, schema validation with per-field errors, and request-header handling.
Invoice Search Filters
Dental Appointment Payload
Print Shop Request Headers
Vendor Onboarding Intake
Responses & Status Codes
Shape what goes out - map each outcome to its status and set the headers that go with it (Location, Accept, Cache-Control, request-id), with one consistent body and error shape. Covers redirects and idempotency, JSON/CSV content negotiation, and response-shaping middleware.
Allotment Plot Responses
Work Order Creation Semantics
Employee Directory Content Negotiation
Public Pricing API
Middleware Basics
Write the shared steps that wrap every request - logging, access control, timing through an injected dependency rather than a hard-coded one, and compose them in front of the routes. Log method/path/final-status/duration, gate writes by token and scope (401/403), stamp a latency header, and stack them all in front of a data-backed API with paged, injection-safe queries. Covers logging, authentication/authorization, timing, and middleware composition.
