Pourquoi votre base Supabase mérite une attention particulière
Ces situations arrivent quand la base de données n'a pas été pensée pour durer dès le départ.
Expertise Supabase · PostgreSQL en production
Mon expérience Supabase est ancrée dans beforbuild.com — un SaaS B2B construit entièrement seul, où la base de données n'était pas un détail mais le cœur de l'architecture.
J'ai conçu 9 schémas PostgreSQL distincts (public, documents, vector, contracts, budget, land, planning, commercial, agent) avec RLS activé sur chaque table. L'isolation multi-tenant est structurelle — aucun utilisateur ne peut accéder aux données d'un autre par construction, pas par convention.
Le schéma vector contient les embeddings pgvector 1024-dim générés par Mistral, avec recherche par similarité cosinus pour le pipeline RAG. Le schéma agent gère les sessions KV et les messages de l'agent conversationnel. Chaque schéma a son propre cycle de migration — baseline + incrémentaux versionnés avec Supabase CLI.
J'utilise pg_net pour les triggers asynchrones (webhooks sortants depuis la DB vers les Workers) et Supabase Realtime pour le streaming SSE vers React via TanStack Query.
La preuve : 9 schémas PostgreSQL en production
beforbuild.com — SaaS B2B construit seul, de l'architecture initiale jusqu'aux migrations de production.
La base de beforbuild.com est organisée en 9 schémas PostgreSQL distincts, chacun correspondant à un domaine métier : public (utilisateurs, organisations), documents (fichiers uploadés, métadonnées), vector (embeddings pgvector), contracts (contrats e-signés Yousign), budget (simulation financière), land (données foncières), planning (Gantt, jalons), commercial (prospects, CRM), agent (sessions IA, messages).
- RLS activé sur toutes les tables — isolation multi-tenant par construction
- Permissions granulaires par schéma — chaque Worker n'accède qu'à ce dont il a besoin
- Migrations indépendantes par schéma — pas de migration monolithique ingérable
- pg_net dans le schéma public pour les triggers asynchrones vers les Workers
Le schéma vector stocke les embeddings générés par l'API Mistral (1024 dimensions) pour chaque chunk de document indexé. La recherche par similarité cosinus alimente le pipeline RAG — les 6 chunks les plus proches de la question de l'utilisateur sont injectés dans le contexte de l'agent IA.
- Embeddings 1024-dim Mistral — un vecteur par chunk de document avec métadonnées enrichies
- Recherche cosinus
vector <=> query_embedding— sub-100ms sur les volumes testés - Métadonnées de chunking : h1, h2, phase, document_name — pour le filtrage et le contexte
- Triggered automatiquement à l'upload via Cloudflare Workflows (OCR → chunking → embedding → insertion)
Pour le streaming SSE de l'agent IA, j'utilise Supabase Realtime comme bus de messages : le Worker IA streame les tokens vers une table Realtime, React les écoute via TanStack Query et les affiche en temps réel. pg_net gère les webhooks sortants depuis la DB directement vers les Workers Cloudflare — sans avoir besoin d'un serveur intermédiaire.
- Supabase Realtime pour le streaming de l'agent IA vers React — expérience conversationnelle fluide
- pg_net pour les triggers asynchrones : statut de contrat Yousign → Worker → mise à jour DB
- Webhooks entrants vérifiés HMAC-SHA256 côté Worker avant écriture en base
- Sessions agent stockées en KV Cloudflare (15 min TTL) — pas de pollution en base
Comment je travaille sur un projet Supabase
Tarifs — Freelance Supabase PostgreSQL
Questions fréquentes — Développeur freelance Supabase
Une architecture Supabase qui tient en production
Multi-schema, RLS, pgvector, migrations versionnées — 30 minutes pour évaluer votre besoin et vous proposer une approche concrète. Remote France, disponible immédiatement.
Ou écrire directement : [email protected]