Architecture
Vue d'ensemble de l'architecture technique de la plateforme WXRK.
Concepts fondamentaux
Le système distingue deux entités clés :
| Entité | Couche | Description |
|---|---|---|
| Utilisateur | Couche Auth | Enregistrement d'authentification Django gérant connexion et sessions |
| Candidat | Couche Domaine | CandidateProfile stockant données CV, évaluations MBTI et candidatures |
Le code d'authentification dit « utilisateur » ; la logique métier dit « candidat ».
Pile technologique
| Couche | Technologie |
|---|---|
| Frontend | Next.js 14 (React) |
| Backend | Django 4.x + Django REST Framework |
| Base de données | PostgreSQL |
| Traitement des tâches | Celery + Redis |
| Génération PDF | WeasyPrint |
| Auth (frontend) | NextAuth.js |
| Auth (backend) | simplejwt |
Structure du projet
wxrk/
├── wxrk_frontend/ # Application Next.js
│ └── app/
│ ├── (auth)/ # Routes d'authentification
│ ├── (app)/ # Routes applicatives authentifiées
│ └── (marketing)/ # Pages marketing publiques
├── wxrk-backend/ # Projet Django
│ ├── profile_app/ # Profils candidats & MBTI
│ ├── technical_review/ # Compétences, évaluations, projets
│ ├── applications/ # Candidatures & documents
│ └── dashboard/ # Statistiques récapitulatives
└── docs/ # Cette documentation
Flux d'authentification
Navigateur → NextAuth.js → POST /api/token/ → Tokens JWT accès + rafraîchissement
↓
Stockage en session
↓
Auto-injecté dans les requêtes API
↓
Auto-rafraîchissement via simplejwt
Flux de génération de CV
L'utilisateur déclenche la génération
↓
Le frontend appelle l'endpoint de génération
↓
Django dispatche une tâche Celery asynchrone
↓
Le frontend interroge le statut (EN ATTENTE → DÉMARRÉ → SUCCÈS)
↓
L'artefact est récupéré et affiché
Applications backend
profile_app
Gère les profils candidats et les données MBTI.
technical_review
Stocke les compétences, évaluations et expériences de projets. La source de données principale pour la génération par IA.
applications
Gère les candidatures et les documents générés. Administre le cycle de vie de Brouillon à Offre/Rejeté.
dashboard
Fournit des statistiques récapitulatives et un fil d'activité récente.
Gestion d'état frontend
- Zustand — Gestion d'état global
- Axios — Appels API via un client typé supportant plusieurs modules spécifiques au domaine