Every developer has a default stack — the combination of tools they reach for when starting a new project. Mine is Nuxt 3 and Supabase. Not because it's perfect, but because it solves the right problems for the applications I typically build.
Why These Two Work Together
Nuxt handles the frontend. Server-side rendering when needed, static generation when appropriate, client-side navigation throughout. The file-based routing, auto-imports, and Vue 3 composition API make development fast without sacrificing structure.
Supabase handles the backend. Database (Postgres), authentication, file storage, realtime subscriptions, and edge functions. It replaces what would otherwise be four or five separate services.
The integration is clean. Nuxt's server routes can call Supabase directly with service role access. The client-side can use Supabase's JavaScript SDK with row-level security. Realtime subscriptions push updates without polling.
What Supabase Replaces
Before Supabase, a typical stack might include:
- A separate auth service (Auth0, Firebase Auth, custom JWT implementation)
- A database with its own hosting (PlanetScale, Railway, managed Postgres)
- File storage (S3, Cloudinary, custom uploads)
- A realtime layer (Pusher, Socket.io server, Ably)
- Serverless functions (Vercel, Netlify, AWS Lambda)
Supabase consolidates these. One dashboard, one SDK, one billing relationship. The cognitive overhead reduction is significant.