>
1. The NoSQL Honeymoon
When you are a mobile developer who doesn't want to build a custom backend from scratch, Firebase Firestore feels like magic at first. You install the SDK, call collection('users').add({ ... }), and you have a working cloud database with real-time sync in ten minutes.
No migrations, no server configuration, no SQL schemas.
The problems start three months later when your application grows beyond a simple demo.
The Firestore Pain Points
- Denormalization Nightmares: Because Firestore is a document NoSQL database, relational queries (like getting all comments for a post along with the author's profile details) require either duplicating user data across hundreds of documents or making multiple chained network calls.
- Surprise Pricing Models: Firestore charges per document read and write. If you accidentally write an inefficient listener or fetch an unpaginated collection, a rogue loop can rack up thousands of billable reads in minutes.
- Complex Aggregations: Want to count the total number of orders placed this month or sum up revenue? In SQL, that is a single
COUNT()orSUM()query. In NoSQL, you often have to maintain manual counter documents.
Why Supabase Won Me Over
During my internship at Adisatya, we chose Supabase for the Ceklok attendance backend, and I have never looked back:
- It is Pure PostgreSQL: Beneath the beautiful dashboard, Supabase is standard, battle-tested PostgreSQL. You get relational integrity, foreign keys, complex JOINs, transactions, and full SQL power.
- Row Level Security (RLS): Instead of writing confusing security rules in a proprietary syntax, you write standard SQL policies:
CREATE POLICY "Users can only view their own attendance" ON attendance FOR SELECT USING (auth.uid() = user_id);. It is clean, declarative, and executed at the database engine level. - Instant REST and Realtime APIs: Every Postgres table automatically generates type-safe REST and WebSocket endpoints.
- Zero Vendor Lock-in: If you ever want to leave Supabase, you can export your standard PostgreSQL dump and host it on AWS, DigitalOcean, or your own server with zero code rewrites.
For mobile developers who need a dependable, production-grade backend without spending weeks writing API boilerplate, Supabase provides the best of both worlds.