Follow Alex, a talented developer, as they build the foundations of CVBoost, a cutting-edge platform for career optimization. Witness the fusion of clean code and visionary design in this professional journey of growth and innovation.
CVBoostTalentIAAlexcareer growthsoftware developmentPython FlaskMVPartificial intelligenceweb development
生成提示词
Contexte Vous avez été recruté par la startup TalentIA pour développer leur nouveau produit phare : CVBoost. L’objectif est de créer un service intelligent capable d'aider les utilisateurs à optimiser leur carrière grâce à l'IA. Dans cette première phase, votre mission est de construire les fondations web de la plateforme. Vous devez livrer une application robuste (un MVP - Produit Minimum Viable) permettant aux utilisateurs de s'inscrire et de soumettre leurs CV en toute sécurité. L'objectif est de stabiliser la structure web et la gestion des données avant d'injecter l'intelligence artificielle dans les phases suivantes. Objectifs pédagogiques Ce projet vous permettra de : Framework Flask : Structurer une application web complète. Templating Jinja2 : Créer des interfaces dynamiques et réutilisables. Gestion des sessions : Implémenter un système d'inscription et de connexion sécurisé. Persistance des données : Utiliser SQLAlchemy pour lier des fichiers à des utilisateurs. Sécurité & Fichiers : Gérer l'upload sécurisé (type, taille, renommage). Pratiques Pro : Versionnage Git atomique et documentation technique. Technologies & Stack Composant Technologie Backend Python / Flask Authentification Flask-Login & Werkzeug (pour le hashage) Base de données SQLite (Via SQLAlchemy) — Note : Solution temporaire pour le dev Frontend Jinja2, HTML5, CSS3 (Bootstrap ou Tailwind autorisés) Sécurité Bibliothèque UUID pour le stockage des fichiers Parcours Utilisateur & Cartographie des Pages 1. Accueil (index.html) | Route : / Présentation du concept CVBoost et des bénéfices (Design inspiré de Rezi ou Jobscan). Barre de navigation dynamique : affiche "Connexion" si l'utilisateur est anonyme, "Mon Historique" et "Déconnexion" s'il est authentifié. 2. Inscription (register.html) | Route : /register Formulaire : Nom, Prénom, Email, Mot de passe, Confirmation du mot de passe. Règle : Vérifier l'unicité de l'email et hasher le mot de passe avant enregistrement. 3. Connexion (login.html) | Route : /login Formulaire : Email et Mot de passe. Redirection automatique vers le formulaire d'upload après succès. 4. Upload de CV (upload.html) | Route : /upload Contrainte : Accessible uniquement aux utilisateurs connectés. Formulaire d'envoi acceptant exclusivement le PDF et le DOCX. Validation de la taille (max 5 Mo). Traitement : Renommage du fichier en UUID.pdf ou UUID.docx et stockage dans un dossier /uploads. 5. Mon Historique (history.html) | Route : /history Tableau listant les CV envoyés par l'utilisateur connecté. Colonnes : Nom d'origine, Date d'envoi, Statut (Fixé à "En attente d'analyse" pour le moment). Lien vers la page de résultat pour chaque document. 6. Résultat de l'Analyse (result.html) | Route : /result/<id> Page de visualisation du document sélectionné. Placeholders : Étant donné que l'IA n'est pas encore intégrée, vous devez simuler l'interface avec des messages du type "Analyse IA bientôt disponible" ou "Matching d'offres en cours de préparation". Spécifications Techniques Importantes Base de Données : Utilisez SQLite pour le moment. C'est une base de données de développement. Nous migrerons vers un SGBD sql dans les modules qui suivent. Sécurité des fichiers : Un utilisateur ne doit pas pouvoir accéder au CV d'un autre utilisateur en changeant l'ID dans l'URL (vérification de propriété via user_id). Architecture : Séparez bien vos modèles de données (models.py), vos routes (routes.py) et vos fichiers statiques. Livrables Attendus Lien du dépôt GitHub : Un historique de commits montrant l'évolution (ex: "feat: add user authentication"). README.md : * Procédure d'installation (pip install -r requirements.txt). Commande pour lancer l'application. Schéma simplifié de la base de données. Base SQLite : Le fichier .db (ou un script de peuplement) contenant au moins un compte test.