- Terraform with AWS – Building the Network and Database
The first half of a real deployment. A VPC with public and private subnets across two availability zones, an internet gateway and route tables, security groups that reference each other instead of hard-coding CIDRs, and an RDS MySQL instance for the pizza API — with the database password kept out of both the code and the state file.
- React Native – Error Boundaries and Failure States
A crash on a phone is a blank screen the user cannot refresh away. Error boundaries and what they deliberately do NOT catch — event handlers, timeouts, async functions, which is most of the code that fails. Turning an API error into something a customer can read, distinguishing a failure from a cancellation, and the LogBox and red screen you only see in development.
- Spring Boot – Testing
The test pyramid as Spring Boot expresses it: a plain unit test with Mockito, a @WebMvcTest slice, a @DataJpaTest slice, and @SpringBootTest for the cases that genuinely need the whole context. Testing secured endpoints, and why the slice you reach for first should be the smallest one that fails honestly.
- TypeScript – Generics
A generic is a function's type argument, and the point is preserving a relationship the checker would otherwise lose. Constraints with extends, defaults, generic interfaces and classes, and the rule for when NOT to reach for one — with a data loading hook that would return `any` without them.
- NestJS – Exception Filters
HttpException and the built-in subclasses, throwing from a service without importing anything HTTP-shaped, and writing a @Catch() filter that turns a database constraint violation into a 409 instead of the bare 500 it would otherwise be. Plus the rule that keeps a filter from being a breaking change: add to the body, never reshape it.