Express.js
Routing, middleware, error handling, security and structuring an Express app.
An introduction to the framework: why Express exists, how it compares to alternatives, and what the request and response objects carry.
How Express maps URLs to handlers: path parameters, query strings, modular routers, and versioning of a public API.
The request-handling chain: the role of next(), execution order, and the difference between built-in, custom, and third-party middleware.
Taking in incoming data and deciding whether it can be trusted: body parsing, field validation, and handling uploaded files.
Using async/await safely inside routes and funnelling failures into one central error handler instead of scattered try/catch blocks.
Serving content to the browser straight from Express: express.static with cache headers for assets, response compression, and server-side HTML rendering through template engines.
Identifying the user through sessions or JWT, configuring CORS, and defending against common attacks and abuse.
Making the app faster: finding bottlenecks under load, scaling across processes, and caching layers for data and responses.
Covering routes with integration tests and collecting readable request and error logs in production.
Structuring a large application, database access patterns, and running WebSocket connections alongside the HTTP server.