feat(auth): scaffold auth pages and guards

- Add Pinia auth store, types, and auth service (mocked)
- Add login/register/verify/forgot password views and dashboard
- Add reusable auth UI components (card, inputs, buttons)
- Add router guards and protected routing wiring
- Disable vue devtools plugin by default to avoid Node localStorage crash
- Update dependencies for cookie handling
- Comment out Umami script in index.html

Made-with: Cursor
This commit is contained in:
2026-04-07 22:43:41 +02:00
parent 2378febe6f
commit 7970bcc0fd
19 changed files with 2495 additions and 14 deletions
+180
View File
@@ -0,0 +1,180 @@
Parfait Killian. Voici **tous les prompts structurés bloc par bloc** pour développer ta **plateforme de formation ultra sécurisée avec abonnement Stripe, cours vidéo/textes, exercices exécutables, progression, etc.** dans Cursor.
Chaque bloc est indépendant et peut être copié-collé dans Cursor directement pour guider la création pas à pas.
---
**🧱 Bloc 1 Authentification sécurisée (frontend uniquement)**
```
Tu crées une plateforme de formation avec cours vidéo/textes, exercices interactifs, paiement par abonnement via Stripe, progression personnalisée et haut niveau de sécurité.
Commence par créer lauthentification côté frontend (Vue 3 + TypeScript).
Fonctionnalités :
- Inscription (email, mot de passe, plan choisi — non fonctionnel pour linstant)
- Connexion avec token (JWT ou cookie, à simuler)
- Déconnexion
- Mot de passe oublié
- Vérification demail (page après inscription)
Implémente :
- un store Pinia `useAuthStore`
- une couche `authService.ts` avec appels mockés
- des vues `LoginView`, `RegisterView`, `ForgotPasswordView`
- composants UI réutilisables pour formulaire
- navigation protégée (route guards)
```
---
**🧱 Bloc 2 Intégration Stripe (paiement + plans)**
```
Ajoute le système de paiement mensuel avec Stripe.
Fonctionnalités :
- Plans dabonnement multiples (mensuel, annuel, premium, etc.)
- Paiement sécurisé via Stripe Checkout ou Billing Portal
- Stockage du statut de souscription côté backend
- Accès conditionnel aux cours selon le plan
Frontend :
- Crée une page "Plans" avec boutons "Sabonner"
- Intègre Stripe.js et redirige vers Checkout
- Gère le retour de paiement via `success_url` / `cancel_url`
Backend (simulé ou prêt pour implémentation future) :
- Création dun client Stripe à linscription
- Webhooks Stripe pour gérer statut de paiement
```
---
**🧱 Bloc 3 Architecture des cours (textes + vidéos + code)**
```
Crée la structure dun cours dans le système.
Fonctionnalités :
- Un cours contient plusieurs chapitres
- Un chapitre contient des leçons (texte, vidéo, exercices)
- Une leçon contient du contenu markdown + vidéo + zone de code
Modèle (à représenter en TypeScript dans frontend pour linstant) :
- Course: id, title, description, cover, plan_required
- Chapter: id, course_id, title, position
- Lesson: id, chapter_id, title, content (markdown), video_url, exercise_type
Crée les vues :
- `CourseOverview.vue` pour explorer un cours
- `LessonViewer.vue` avec affichage markdown + vidéo + éditeur de code
```
---
**🧱 Bloc 4 Progression utilisateur dans les cours**
```
Crée un système pour suivre la progression individuelle de lutilisateur.
Fonctionnalités :
- Chaque utilisateur peut suivre plusieurs cours
- Chaque leçon peut être marquée comme complétée
- Affichage de la progression dans le cours (ex: 4/10 leçons terminées)
- Synchronisé avec le backend (mocké pour linstant)
Implémente :
- Un store Pinia `useProgressStore`
- Une structure : { user_id, course_id, completed_lessons: [lesson_ids] }
- Affiche des badges de progression dans lUI
```
---
**🧱 Bloc 5 Éditeur de code avec exécution sandboxée**
```
Ajoute une zone dexécution de code dans certaines leçons (exercices interactifs).
Fonctionnalités :
- Zone d’édition avec CodeMirror ou Monaco Editor
- Bouton "Exécuter"
- Envoi du code à une API dexécution (Docker, VM, ou service type Piston ou Playground)
- Récupération de loutput stdout/stderr
Commence avec un backend mocké (`codeRunnerService.ts`) qui renvoie une sortie simulée, prêt à être branché sur un vrai moteur plus tard.
UI :
- Composant `CodeExercise.vue` avec éditeur + output + reset
- Validation des exercices dans la progression si output match attendu
```
---
**🧱 Bloc 6 Sécurité avancée & protection des routes**
```
Implémente une sécurité frontend renforcée.
Fonctionnalités :
- Redirection automatique si token expiré
- Accès conditionnel selon abonnement (plan actif ou non)
- Navigation dynamique : masquer les cours inaccessibles
Ajoute :
- Middleware de navigation Vue Router pour bloquer laccès aux routes protégées
- Contrôle daccès par rôle/plan dans `authStore`
- Méthodes helpers comme `canAccess(course)` ou `hasPlan(planName)`
```
---
**🧱 Bloc 7 Tableau de bord utilisateur (dashboard)**
```
Crée un dashboard utilisateur avec :
- Cours suivis et progression
- Plan actuel et facturation
- Historique des paiements (via Stripe si connecté)
- Accès aux paramètres de compte
Crée la vue `DashboardView.vue` avec :
- Composants `UserCourses.vue`, `BillingInfo.vue`, `AccountSettings.vue`
- Requêtes via les stores et services simulés
```
---
**🧱 Bloc 8 Administration des cours (interface admin)**
```
Crée une interface pour que ladministrateur puisse :
- Créer, modifier, supprimer des cours
- Ajouter des chapitres, leçons, vidéos, exercices
Crée la vue `AdminCoursesView.vue` avec :
- Liste des cours avec boutons daction
- Formulaires dynamiques pour ajouter chapitre/leçon
- Éditeur markdown intégré + upload vidéo
Utilise Pinia ou un store temporaire pour gérer les états du formulaire.
```
---
**🧱 Bloc 9 Gestion des erreurs et UX propre**
```
Ajoute une UX propre et robuste :
- Toasts pour succès/erreurs
- Indicateurs de chargement dans tous les appels API
- Pages 404 / 403 / erreur serveur
- Fallbacks pour vidéos, markdown, et éditeur de code
Ajoute un composable `useToast.ts` pour centraliser l'affichage des messages et erreurs.
```
---
Souhaites-tu que je taide à écrire le backend ou les services API de ces blocs en parallèle ? (Rails, Node.js, autre ?)