LEVEL 11 · BACKEND ENGINEERING
Course Core
Software design and architecture
Give code a shape that survives growth: design principles, SOLID and design patterns solving real problems, layered and clean architecture, architecture styles, and a small framework you build yourself so no framework is magic.
0 of 12 lessons done
When you finish, you can
- Spot high coupling and low cohesion, and refactor it
- Apply SOLID, DRY, KISS and YAGNI with judgement
- Use factory, builder, adapter, decorator, proxy, strategy, observer, command and chain of responsibility where they solve a problem
- Structure a backend in layers with ports and adapters
- Compare monoliths, modular monoliths, microservices and event-driven systems
- Build and explain the parts of a backend framework
You build: A miniature TypeScript framework with a container, router, middleware and validation
MODULE 1
Design principles
- 1Design principles through refactoringRefactor a tangled order function step by step into validation, pricing, payment, storage and notification parts, with tests printed after every step.55 min
- 2SOLID, DRY, KISS and YAGNIMeet SOLID, DRY, KISS and YAGNI through real invoice, promotion and reminder bugs, then see how each principle goes wrong when it is applied without judgement.55 min
MODULE 2
Design patterns
- 3Creational patternsFix real object-creation bugs with factories, abstract factories and builders, then see why a DI container's singleton lifetime beats the singleton pattern.55 min
- 4Structural patternsWrap a third-party SMS SDK in an adapter, add retries, logging and caching with decorators, control access with proxies, and hide SQL behind a repository.60 min
- 5Behavioural patternsTurn a shipping-fee switch into strategies, decouple order reactions with observers, make admin actions undoable commands, and build middleware as a chain.60 min
MODULE 3
Architecture
- 6Backend architectureApply separation of concerns and SOLID to a whole backend: domain, application and infrastructure layers, ports, dependency injection and a composition root.45 min
- 7Clean architecture: ports and adaptersRebuild the BookStore's order flow as domain, use cases, ports and adapters, run it over HTTP and a CLI, and enforce the dependency rule with a checker.55 min
- 8Architecture stylesCompare monoliths, modular monoliths, microservices, events, messages, CQRS and gateways by simulating them in-process, with injected latency and failures.60 min
MODULE 4
Framework engineering
- 9What a framework doesLibrary vs framework and inversion of control, then every job a backend framework takes over: lifecycle, DI, routing, config, validation. Build a tiny one.30 min
- 10Build a mini framework, part 1: the coreBuild the core of a small TypeScript framework (container, config, logger, lifecycle with rollback, application object) and compare each part with ZudoJS.60 min
- 11Build a mini framework, part 2: HTTPAdd a router, middleware, controllers, validation, error responses and an event bus to your mini framework, serve it with node:http, and compare it with ZudoJS.60 min
- 12Reading framework sourceAnswer questions the docs cannot by reading published ZudoJS packages: package boundaries, .d.ts files, generics, and a request traced through dist code.55 min
Course checkpoint
Prove you can move on. The checkpoint picks 20 questions at random from every lesson in this course. Get 16 right to pass. Your result is saved in this browser only.