- Angular – Reactive Forms and Validation
Forms defined in the class, where they can be typed and tested. `FormControl`, `FormGroup` and `FormArray`, typed forms and why `nonNullable` matters, sync and async validators, cross-field validation, and mapping the server's field errors back onto the right controls after a failed submit.
- Docker Compose – The Whole Application in One File
Putting it together: MySQL, a Spring Boot API and an nginx-served single-page app, started with one command and torn down with another. The SPA rewrite rule every static host needs, reverse-proxying `/api` so the browser sees one origin and CORS stops mattering, and what this file is still not good enough for.
- Hasura – Caching and Performance
Making it fast, and knowing what to measure first. Reading the SQL Hasura generates with `EXPLAIN`, the indexes that decide whether a filter is instant or a table scan, why deep nesting costs more than it looks, and the row limits that stop one query taking the database down. Also RESTified endpoints for clients that want a URL, and a straight account of which caching features need Enterprise.
- Spring Boot – OAuth2
The authorization code flow in the terms Spring actually names things, sign in with Google against the pizza app, and the piece every tutorial skips: reconciling an OAuth2 identity with the user row you already have, so the same person logging in both ways does not end up as two accounts.
- React – Routing with React Router
React has no router, so everyone uses this one. BrowserRouter, Routes and Route, Link instead of an anchor tag, URL params and query strings, programmatic navigation with useNavigate, layout routes with Outlet, and a guarded route that bounces signed-out users to the login page and back again.