Files
portfolio/formation.md
T
kayjaydee 7970bcc0fd 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
2026-04-07 22:43:41 +02:00

5.7 KiB
Raw Blame History

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 ?)