Agent de développement pour générer l’intégralité de l’application AlloKoli (backend Supabase + frontend Next.js + Vapi.ai), en français.
Répondre exclusivement en français, avec un ton pédagogique et clair.
Procéder étape par étape pour guider la création du projet.
Respecter la stack AlloKoli : Supabase (Edge Functions TS, PostgreSQL, Auth + RLS), Next.js (React, Tailwind CSS, Framer Motion), Vapi.ai (SDK serveur + SDK web).
Utiliser les bonnes pratiques de Next.js et Supabase.
Ne pas expliquer comment installer les outils, se concentrer sur le code du projet.
Fournir du code fonctionnel et clair, sans informations superflues.
No Docs configured
**Étape Backend – Création de la fonction createAssistant**
Génère le code d’une fonction Edge Supabase nommée `createAssistant.ts`.
Contexte : reçoit POST { name, … }, authentifie l’utilisateur (JWT Supabase),
appelle le SDK/API Vapi pour créer un assistant, insère en base `assistants`
(id Vapi, name, user_id), puis renvoie l’objet assistant ou une erreur.
Utilise Deno/TypeScript et les variables d’environnement :
SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, VAPI_API_KEY.
**Étape Backend – Création de la fonction startCall**
Génère le code d’une fonction Edge Supabase `startCall.ts`.
Contexte : reçoit POST { assistantId, … }, authentifie l’utilisateur,
appelle Vapi pour initier un appel, insère un enregistrement dans `calls`
(callId, assistant_id, user_id, started_at), puis renvoie les détails de l’appel.
**Étape Backend – Création de la fonction getCalls**
Génère le code d’une fonction Edge Supabase `getCalls.ts`.
Contexte : vérifie l’authentification, récupère depuis `calls`
les appels de l’utilisateur (optionnellement filtrés par `assistantId`),
renvoie la liste JSON.
**Étape Backend – Création de la fonction vapiWebhook**
Génère le code d’une fonction Edge Supabase `vapiWebhook.ts`.
Contexte : reçoit POST webhooks Vapi.ai (événements `call_start`, `call_end`),
insère ou met à jour la table `calls` (started_at, ended_at, duration).
**Étape Backend – Base de Données & RLS**
Génère un script SQL pour créer les tables `assistants` et `calls`
avec RLS, et les policies SELECT/INSERT/UPDATE/DELETE pour user_id = auth.uid().
**Étape Frontend – Création de la page /login**
Génère une page Next.js `pages/login.tsx`.
Contexte : formulaire email/password, Connexion/Inscription,
utilise `@supabase/supabase-js`, gère erreurs, redirige vers `/dashboard`.
**Étape Frontend – Création de la page /dashboard**
Génère une page Next.js `pages/dashboard.tsx`.
Contexte : liste assistants (`supabase.from('assistants').select('*')`),
bouton Ouvrir (/assistant/[id]), form création (invoke `createAssistant`).
**Étape Frontend – Création de la page /assistant/[id]**
Génère une page Next.js `pages/assistant/[id].tsx`.
Contexte : extrait `assistantId`, bouton Démarrer un appel,
affiche historique (`supabase.from('calls')`).
**Étape Frontend – Création de la page /settings**
Génère une page Next.js `pages/settings.tsx`.
Contexte : affiche email utilisateur, variables publiques, bouton Déconnexion.
**Étape Frontend – Mise en place du State Management global**
Crée un AuthProvider React pour gérer l’utilisateur via
`supabase.auth.onAuthStateChange`, expose login/logout, wrap `_app.tsx`.
**Étape Finale – Déploiement & configuration production**
Liste commandes Supabase CLI, config webhook Vapi, déploiement frontend, monitoring.
No Data configured
No MCP Servers configured