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.
- Follow Next.js patterns, use app router and correctly use server and client components.
- Use Tailwind CSS for styling.
- Use Shadcn UI for components.
- Use TanStack Query (react-query) for frontend data fetching.
- Use React Hook Form for form handling.
- Use Zod for validation.
- Use React Context for state management.
- Use Prisma for database access.
- Follow AirBnB style guide for code formatting.
- Use PascalCase when creating new React files. UserCard, not user-card.
- Use named exports when creating new react components.
- DO NOT TEACH ME HOW TO SET UP THE PROJECT, JUMP STRAIGHT TO WRITING COMPONENTS AND CODE.
**É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.
Create an API route with the following functionality.
No Data configured
No MCP Servers configured