Vi byggde 20+ projekt på Supabase — här är vad vi lärde oss
När vi startade ZORC testade vi allt: Firebase, PocketBase, Appwrite, Convex. Sedan landade vi på Supabase — och har använt det i varje kundprojekt sedan dess.
Den här guiden är inte en "vad är Supabase?"-artikel. Det är en praktisk genomgång baserad på verkliga projekt vi levererat.
Vad är Supabase?
Supabase är en open source-plattform som ger dig en fullständig PostgreSQL-databas, autentisering, realtids-subscriptions, edge functions, lagring och vector-embeddings — allt via en enda dashboard och SDK.
Tänk Firebase, men med:
- Riktig PostgreSQL istället för NoSQL
- Row Level Security (RLS) direkt i databasen
- Ingen vendor lock-in — du äger datan och kan self-hosta
Varför vi valde Supabase över Firebase
| Firebase | Supabase | |
|---|---|---|
| Databas | Firestore (NoSQL) | PostgreSQL (SQL) |
| Vendor lock-in | Hög (Google) | Ingen (open source) |
| Prissättning | Oförutsägbar vid skalning | Transparent, fasta planer |
| RLS | Firestore rules (egen syntax) | PostgreSQL policies (SQL) |
| Realtid | Bra | Bra (Postgres Changes) |
| Edge Functions | Cloud Functions | Deno-baserade Edge Functions |
| AI/Vectors | Manuellt | pgvector inbyggt |
| GDPR | Krångligt (US-data) | EU-hosting tillgängligt |
Det avgörande för oss: GDPR. Många av våra kunder kräver EU-lagring. Supabase erbjuder regioner i Frankfurt och Stockholm — Firebase gör det inte lika enkelt.
Hur vi sätter upp ett Supabase-projekt på ZORC
1. Databasdesign först
Vi börjar alltid med datamodellen. Supabase har en inbyggd SQL-editor där vi kan skapa tabeller, relationer och RLS-policies direkt.
ZORC-princip: Vi skriver alltid migrations-filer, aldrig manuella ändringar i dashboard i produktion.
2. Row Level Security från dag ett
RLS innebär att databasen själv kontrollerar vem som får se och ändra data. Det är inte ett extra lager — det är säkerheten.
-- Användare kan bara se sina egna ordrar
CREATE POLICY "Users see own orders" ON orders
FOR SELECT USING (auth.uid() = user_id);
Varför det spelar roll: Utan RLS räcker ett felkonfigurerat API för att exponera all kunddata. Med RLS är datan skyddad även om API:et har en bugg.
3. Realtid för interaktiva features
Supabase Realtime låter dig prenumerera på databasändringar via WebSocket. Vi använder det för:
- Live dashboards — data uppdateras utan sidladdning
- Kollaborativa verktyg — flera användare ser ändringar direkt
- Notifikationer — triggas av INSERT/UPDATE i databasen
4. Edge Functions för affärslogik
Supabase Edge Functions körs på Deno Deploy — globalt, nära användaren. Vi använder dem för:
- Stripe-webhooks
- E-postutskick via Resend
- AI-integrationer (OpenAI, Anthropic)
- Tredjepartsintegrationer
5. Lagring med policies
Supabase Storage fungerar som S3, men med samma RLS-modell. Perfekt för användaruppladdningar med automatisk åtkomstkontroll.
Verkliga ZORC-projekt byggda på Supabase
- E-handelsplattform — 50 000+ produkter, realtidslager, Stripe-betalningar
- SaaS-dokumenthantering — RLS-skyddade dokument per organisation
- Bokningsplattform — realtidsuppdatering av tillgängliga tider
- AI-verktyg — pgvector för semantisk sökning i 100 000+ dokument
5 misstag vi gjort (så du slipper)
- Hoppade över RLS i utvecklingsfasen. Resulterade i en panikomskrivning innan lansering. Nu: RLS från commit #1.
- Använde klient-SDK för tunga queries. Flytta komplex logik till Edge Functions istället.
- Ignorerade database indexes. En query gick från 3 sekunder till 15 ms med rätt index.
- Lagrade bilder i databasen. Använd Supabase Storage, inte base64 i kolumner.
- Manuella migration i produktion. Använd alltid
supabase db pushmed versionerade migreringar.
När Supabase INTE är rätt val
- Du behöver grafdata → Använd Neo4j
- Extremt hög skrivfrekvens (100k+ writes/s) → Överväg ScyllaDB eller DynamoDB
- Du vill aldrig tänka på databas → Firebase kan fortfarande vara enklare för prototyper
Kom igång
Vill du bygga med Supabase men behöver hjälp med arkitektur, säkerhet eller skalning? Boka ett möte med oss — vi delar gärna med oss av vad vi lärt oss i 20+ projekt.