Every app in this portfolio has a backend behind it and we wrote all of them: Postgres on Supabase, authentication, edge functions for the work a phone cannot do, and the webhooks that keep the App Store and the database telling the same story.
The part we take seriously and most teams skip is row-level security. A mobile app ships its client key inside the binary, and anyone who downloads the app can read that key out of it. So the only safe assumption is that the key is public, and every table has to be written so that whoever holds it can reach one user's rows — their own — and nothing else. We write those policies with the schema and then test them with a key that should not be allowed, because that is the only test that proves anything.
The rest is unglamorous and load-bearing: migrations that roll forward on a live database with users on it, an account deletion path that actually deletes, and a schema that survives the day the product changes shape.