Spontané (road-to-100-users)
Plateforme qui aide les étudiants à décrocher une alternance ou un stage par la candidature spontanée.
Spécification complète : SPEC.md. Règles pour les agents de code : AGENTS.md.
Stack
Next.js 16 (App Router, TypeScript strict) · Tailwind CSS v4 + shadcn/ui · Supabase (Postgres, Auth, Storage) · Zod · Vitest · Vercel.
Commandes
npm install # installer les dépendances
npm run dev # lancer en local sur http://localhost:3000
npm run lint # vérifier le style du code
npm run typecheck # vérifier les types TypeScript
npm test # lancer les tests unitaires
bash supabase/tests/run.sh # tester la migration + les règles RLS (DATABASE_URL requis)
Arborescence
app/(marketing)/ page d'accueil publique
app/(app)/ zone connectée (dashboard, profil, chasseur, suivi, paramètres)
app/login, app/auth/ connexion Google via Supabase
lib/supabase/ clients Supabase (navigateur, serveur, service role)
lib/llm/ couche d'abstraction LLM (generateJson + fournisseurs)
lib/crypto.ts chiffrement AES-256-GCM des tokens Google
lib/env.ts lecture validée des variables d'environnement
supabase/migrations/ schéma SQL (tables, RLS, bucket cvs)
supabase/tests/ tests SQL des règles RLS
tests/ tests Vitest
Checklist de configuration
1. Supabase
- Ouvre ton projet sur supabase.com → SQL Editor → New query.
- Copie-colle tout le contenu de
supabase/migrations/20261025000000_init.sql, puis Run. Le message doit être « Success. No rows returned ».
- Project Settings → API : note
Project URL, la clé anon et la clé service_role (secrète).
- Authentication → URL Configuration :
- Site URL : l'URL de production Vercel (ex.
https://road-to-100-users.vercel.app).
- Redirect URLs : ajoute
http://localhost:3000/**, https://road-to-100-users.vercel.app/** et https://*.vercel.app/** (déploiements de prévisualisation).
- Authentication → Providers → Google : active-le et colle le Client ID et le Client Secret créés à l'étape 2. Copie l'URL « Callback URL (for OAuth) » affichée (forme
https://<ref>.supabase.co/auth/v1/callback) : elle sert à l'étape 2.
2. Google Cloud (connexion Google)
- console.cloud.google.com → nouveau projet
spontane.
- APIs et services → Écran de consentement OAuth : type Externe, nom « Spontané », ton e-mail en contact. Statut : Test. Dans Utilisateurs de test, ajoute ton adresse Gmail.
- Identifiants → Créer des identifiants → ID client OAuth : type Application Web.
- Origines JavaScript autorisées :
http://localhost:3000 et ton URL Vercel.
- URI de redirection autorisés : l'URL Callback Supabase copiée à l'étape 1.5.
- Copie le Client ID et le Client Secret dans Supabase (étape 1.5).
L'API Gmail sera activée au Sprint 3, dans ce même projet Google.
3. Vercel
- Settings → Environment Variables : ajoute pour Production, Preview et Development :
NEXT_PUBLIC_SUPABASE_URL
NEXT_PUBLIC_SUPABASE_ANON_KEY
SUPABASE_SERVICE_ROLE_KEY
APP_URL (ton URL Vercel)
- Deployments → redéploie le dernier déploiement pour qu'il prenne les variables.
Les autres variables de .env.example seront nécessaires aux sprints suivants.
4. En local (optionnel)
cp .env.example .env.local # puis remplis les valeurs
npm install && npm run dev
5. Tester que tout fonctionne
- Ouvre l'URL Vercel → la page d'accueil s'affiche.
- Clique « Commencer » → « Continuer avec Google » → choisis ton compte.
- Tu arrives sur le tableau de bord avec « Bonjour ».
- Dans Supabase → Table Editor → profiles : une ligne a été créée pour toi.
- Déconnecte-toi → tu reviens sur l'accueil ; ouvrir
/dashboard te renvoie vers la page de connexion.