diff --git a/app/(protected)/dashboard/page.tsx b/app/(protected)/dashboard/page.tsx index 9190b20..d5b3cda 100644 --- a/app/(protected)/dashboard/page.tsx +++ b/app/(protected)/dashboard/page.tsx @@ -55,7 +55,7 @@ export default async function DashboardPage() { Bonjour {profile?.full_name?.split(" ")[0] || "!"} đź‘‹

- Voici un apercu de ta progression dans le programme. + Voici un aperçu de ta progression dans le programme.

@@ -69,7 +69,7 @@ export default async function DashboardPage() { -

Modules completes

+

Modules complétés

{completedModules} @@ -122,11 +122,11 @@ export default async function DashboardPage() {

🚀

- Le programme arrive bientot ! + Le programme arrive bientĂ´t !

- Les modules de formation sont en cours de preparation. Tu seras - notifie des qu'ils seront disponibles. + Les modules de formation sont en cours de préparation. Tu seras + notifié dès qu'ils seront disponibles.

)} diff --git a/app/(protected)/formations/[moduleId]/page.tsx b/app/(protected)/formations/[moduleId]/page.tsx index 95f9d9a..e3c6ad9 100644 --- a/app/(protected)/formations/[moduleId]/page.tsx +++ b/app/(protected)/formations/[moduleId]/page.tsx @@ -86,7 +86,7 @@ export default async function ModulePage({ params }: ModulePageProps) { d="M5 13l4 4L19 7" /> - Complete + Complété )} @@ -133,7 +133,7 @@ export default async function ModulePage({ params }: ModulePageProps) { d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" /> - Telecharger le PDF + Télécharger le PDF )} @@ -144,7 +144,7 @@ export default async function ModulePage({ params }: ModulePageProps) {
🎬

- Le contenu sera bientot disponible + Le contenu sera bientĂ´t disponible

diff --git a/app/(protected)/formations/page.tsx b/app/(protected)/formations/page.tsx index 3794653..9c5a05a 100644 --- a/app/(protected)/formations/page.tsx +++ b/app/(protected)/formations/page.tsx @@ -53,7 +53,7 @@ export default async function FormationsPage() {

@@ -72,7 +72,7 @@ export default async function FormationsPage() { Semaine {week} - {weekCompleted}/{weekTotal} completes + {weekCompleted}/{weekTotal} complétés
@@ -101,7 +101,7 @@ export default async function FormationsPage() { Aucun module disponible

- Les modules de formation seront bientot disponibles. + Les modules de formation seront bientĂ´t disponibles.

)} diff --git a/app/api/candidature/route.ts b/app/api/candidature/route.ts index c827fa1..e57e0c9 100644 --- a/app/api/candidature/route.ts +++ b/app/api/candidature/route.ts @@ -42,14 +42,26 @@ export async function POST(request: Request) { ); } - // Validation age + // Validation âge if (body.age < 18 || body.age > 65) { return NextResponse.json( - { error: "L'age doit etre entre 18 et 65 ans." }, + { error: "L'âge doit être entre 18 et 65 ans." }, { status: 400 } ); } + // Vérifier que les variables d'environnement Supabase sont configurées + if (!process.env.NEXT_PUBLIC_SUPABASE_URL || !process.env.SUPABASE_SERVICE_ROLE_KEY) { + console.error("Variables Supabase manquantes:", { + url: !!process.env.NEXT_PUBLIC_SUPABASE_URL, + serviceRole: !!process.env.SUPABASE_SERVICE_ROLE_KEY, + }); + return NextResponse.json( + { error: "Configuration serveur incomplète. Contactez l'administrateur." }, + { status: 500 } + ); + } + const supabase = createAdminClient(); // Vérifier si une candidature existe déjà avec cet email @@ -61,7 +73,7 @@ export async function POST(request: Request) { if (existing) { return NextResponse.json( - { error: "Une candidature avec cet email existe deja." }, + { error: "Une candidature avec cet email existe déjà." }, { status: 409 } ); } @@ -90,7 +102,7 @@ export async function POST(request: Request) { if (insertError) { console.error("Erreur insertion candidature:", insertError); return NextResponse.json( - { error: "Erreur lors de l'enregistrement de la candidature." }, + { error: "Erreur lors de l'enregistrement. Vérifiez que la base de données est configurée." }, { status: 500 } ); } @@ -104,30 +116,30 @@ export async function POST(request: Request) { await resend.emails.send({ from: "HookLab ", to: body.email, - subject: "Candidature HookLab recue !", + subject: "Candidature HookLab reçue !", html: `
-

Candidature recue !

+

Candidature reçue !

Salut ${body.firstname},

Merci pour ta candidature au programme HookLab !

-

Notre equipe va etudier ton profil et te repondre sous 24 heures.

-

A tres vite,
L'equipe HookLab

+

Notre équipe va étudier ton profil et te répondre sous 24 heures.

+

À très vite,
L'équipe HookLab

`, }); } catch (emailError) { - // Log l'erreur mais ne bloque pas la candidature console.error("Erreur envoi email:", emailError); } } return NextResponse.json( - { message: "Candidature enregistree avec succes." }, + { message: "Candidature enregistrée avec succès." }, { status: 201 } ); - } catch { + } catch (err) { + console.error("Erreur serveur candidature:", err); return NextResponse.json( - { error: "Erreur serveur. Veuillez reessayer." }, + { error: "Erreur serveur. Veuillez réessayer." }, { status: 500 } ); } diff --git a/app/api/stripe/webhook/route.ts b/app/api/stripe/webhook/route.ts index 318953c..12fc081 100644 --- a/app/api/stripe/webhook/route.ts +++ b/app/api/stripe/webhook/route.ts @@ -128,18 +128,18 @@ export async function POST(request: Request) { await resend.emails.send({ from: "HookLab ", to: email, - subject: "Bienvenue dans HookLab ! Tes acces sont prets", + subject: "Bienvenue dans HookLab ! Tes accès sont prêts", html: `

Bienvenue dans HookLab !

-

Ton paiement a ete confirme. Voici tes acces :

+

Ton paiement a été confirmé. Voici tes accès :

Email : ${email}

Mot de passe : ${tempPassword}

Connecte-toi sur hooklab.fr/login pour commencer.

-

Pense a changer ton mot de passe apres ta premiere connexion !

-

A tres vite,
L'equipe HookLab

+

Pense à changer ton mot de passe après ta première connexion !

+

À très vite,
L'équipe HookLab

`, }); @@ -204,7 +204,7 @@ export async function POST(request: Request) { } default: - console.log(`Webhook non gere: ${event.type}`); + console.log(`Webhook non géré: ${event.type}`); } return NextResponse.json({ received: true }); diff --git a/app/candidature/page.tsx b/app/candidature/page.tsx index ecd71bf..aec1c73 100644 --- a/app/candidature/page.tsx +++ b/app/candidature/page.tsx @@ -124,7 +124,7 @@ export default function CandidaturePage() { Candidature HookLab

- Reponds a quelques questions pour qu'on puisse evaluer ton + Réponds à quelques questions pour qu'on puisse évaluer ton profil.

@@ -151,8 +151,8 @@ export default function CandidaturePage() { updateField("firstname", e.target.value)} /> @@ -166,7 +166,7 @@ export default function CandidaturePage() { />
{[ { id: "jeune", - label: "Etudiant / Jeune", + label: "Étudiant / Jeune", emoji: "🎓", }, { @@ -231,13 +231,13 @@ export default function CandidaturePage() {
{[ - "Debutant complet", - "J'ai deja teste des choses", - "Je genere deja des revenus en ligne", + "Débutant complet", + "J'ai déjà testé des choses", + "Je génère déjà des revenus en ligne", ].map((opt) => (