Architektur
Technische Architekturübersicht der WXRK-Plattform.
Grundkonzepte
Das System unterscheidet zwei Schlüsselentitäten:
| Entität | Schicht | Beschreibung |
|---|---|---|
| Benutzer | Auth-Schicht | Django-Authentifizierungseintrag für Login und Sessions |
| Kandidat | Domain-Schicht | CandidateProfile speichert CV-Daten, MBTI-Bewertungen und Bewerbungen |
Authentifizierungscode sagt „Benutzer"; Geschäftslogik sagt „Kandidat".
Technologie-Stack
| Schicht | Technologie |
|---|---|
| Frontend | Next.js 14 (React) |
| Backend | Django 4.x + Django REST Framework |
| Datenbank | PostgreSQL |
| Aufgabenverarbeitung | Celery + Redis |
| PDF-Generierung | WeasyPrint |
| Auth (Frontend) | NextAuth.js |
| Auth (Backend) | simplejwt |
Projektstruktur
wxrk/
├── wxrk_frontend/ # Next.js-Anwendung
│ └── app/
│ ├── (auth)/ # Authentifizierungsrouten
│ ├── (app)/ # Authentifizierte App-Routen
│ └── (marketing)/ # Öffentliche Marketing-Seiten
├── wxrk-backend/ # Django-Projekt
│ ├── profile_app/ # Kandidatenprofile & MBTI
│ ├── technical_review/ # Kompetenzen, Bewertungen, Projekte
│ ├── applications/ # Bewerbungen & Dokumente
│ └── dashboard/ # Zusammenfassungsstatistiken
└── docs/ # Diese Dokumentation
Authentifizierungsablauf
Browser → NextAuth.js → POST /api/token/ → JWT Zugangs- + Refresh-Tokens
↓
Session-Speicherung
↓
Auto-Einbettung in API-Anfragen
↓
Auto-Refresh via simplejwt
CV-Generierungs-Workflow
Benutzer löst Generierung aus
↓
Frontend ruft Generierungs-Endpoint auf
↓
Django dispatcht asynchrone Celery-Aufgabe
↓
Frontend fragt Status ab (WARTEND → GESTARTET → ERFOLGREICH)
↓
Artefakt wird abgerufen und angezeigt
Backend-Anwendungen
profile_app
Verwaltet Kandidatenprofile und MBTI-Daten.
technical_review
Speichert Kompetenzen, Bewertungen und Projekterfahrungen. Die Haupt-Datenquelle für KI-Generierung.
applications
Verwaltet Bewerbungen und generierte Dokumente.
dashboard
Liefert Zusammenfassungsstatistiken und Aktivitäts-Feed.
Frontend-Zustandsverwaltung
- Zustand — Globale Zustandsverwaltung
- Axios — API-Aufrufe über einen typisierten Client