- iOS – The App Lifecycle and What a Phone Does to You
A browser tab lives until it is closed; your app can be suspended mid-sentence and killed without warning. scenePhase, the write you have to flush before backgrounding, the launch gate an async Keychain read forces on you, and the startup ordering that is load-bearing rather than tidy.
- TypeScript – Decorators
A decorator is a function that runs when the class is defined. What @Injectable, @Column and @Post are really doing, the metadata reflection that lets a framework read your parameter types at runtime, writing your own, and the split between the legacy experimentalDecorators and the standard ones — with which this app uses.
- NestJS – File Upload
FileInterceptor and multer, and the fact that decides everything else about an upload endpoint: the Content-Type is whatever the client typed. Memory storage versus disk and why it is a security choice, stopping a 2 GB request at 5 MB, sniffing magic bytes, and generating the stored filename rather than sanitising one.
- iOS – Persistence, UserDefaults and the Keychain
Where each thing belongs and why the split is a security decision, not a convenience one. UserDefaults for preferences, the Keychain for a session token, the accessibility class that actually matters, and why the Security API makes you write save as delete-then-add. Plus what SwiftData is for.
- TypeScript – tsconfig, the Flags That Matter
Most of tsconfig you set once. These are the ones that change what compiles: the strict family one flag at a time, target and lib and how they differ, moduleResolution, noEmit, erasableSyntaxOnly, and path aliases. Read off the two real configs in this app — which disagree with each other, correctly.