Notes from the build.
What we learned shipping real systems - written for the engineers who will read the code later.
Outgrowing a provider is a scaling event, not a mistake
Moving FocalHQ from Firestore to PostgreSQL on Neon and putting Cloudflare in front of it - why the first choice was still the right one, and what decides whether the second one costs weeks or months.
Choosing an ASP is an architecture decision, not a procurement one
The UAE mandate says you must appoint an accredited service provider. What the tender documents measure and what actually lands in your codebase are two different lists.
Three copies of the same exchange-rate client, on purpose
Why FocalHQ's backend services duplicate code instead of sharing it, the one test that decides what may live in a shared package, and the three places sharing tries to sneak back in.
PINT AE in practice: what the UAE e-invoicing format actually requires
Reading the spec is one thing; mapping a live Xero invoice into it is another. Field-level notes from building NAZM's generation layer.
Firebase Functions v2 in production: what we'd keep and what we'd avoid
A year of running per-concern services on Functions v2 - cold starts, concurrency, and where Cloud Run earns its place.
Storing money as minor units, end to end
Why every amount in our systems is an integer, and the three places float arithmetic still tries to sneak back in.
When a spreadsheet is the right MVP - and when it stops being one
The Apps Script back office that ran a company for years, and the signals that told us it was time to rebuild.