Architecture

Vue d'ensemble de l'architecture technique de la plateforme WXRK.

Concepts fondamentaux

Le système distingue deux entités clés :

EntitéCoucheDescription
UtilisateurCouche AuthEnregistrement d'authentification Django gérant connexion et sessions
CandidatCouche DomaineCandidateProfile stockant données CV, évaluations MBTI et candidatures

Le code d'authentification dit « utilisateur » ; la logique métier dit « candidat ».

Pile technologique

CoucheTechnologie
FrontendNext.js 14 (React)
BackendDjango 4.x + Django REST Framework
Base de donnéesPostgreSQL
Traitement des tâchesCelery + Redis
Génération PDFWeasyPrint
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

En lien avec