Architecture
Technical architecture overview of the WXRK platform.
Core Concepts
The system distinguishes between two key entities:
| Entity | Layer | Description |
|---|---|---|
| User | Auth Layer | Django's authentication record handling login and sessions |
| Candidate | Domain Layer | CandidateProfile storing CV data, MBTI assessments, and job applications |
Authentication code says "user"; business logic says "candidate."
Technology Stack
| Layer | Technology |
|---|---|
| Frontend | Next.js 14 (React) |
| Backend | Django 4.x + Django REST Framework |
| Database | PostgreSQL |
| Task processing | Celery + Redis |
| PDF generation | WeasyPrint |
| Auth (frontend) | NextAuth.js |
| Auth (backend) | simplejwt |
Project Structure
wxrk/
├── wxrk_frontend/ # Next.js application
│ └── app/
│ ├── (auth)/ # Authentication routes
│ ├── (app)/ # Authenticated app routes
│ └── (marketing)/ # Public marketing pages
├── wxrk-backend/ # Django project
│ ├── profile_app/ # Candidate profiles & MBTI
│ ├── technical_review/ # Skills, assessments, projects
│ ├── applications/ # Job applications & documents
│ └── dashboard/ # Summary statistics
└── docs/ # This documentation
Authentication Flow
Browser → NextAuth.js → POST /api/token/ → JWT access + refresh tokens
↓
Session storage
↓
Auto-injected into API requests
↓
Auto-refresh via simplejwt
CV Generation Workflow
User triggers generation
↓
Frontend calls generation endpoint
↓
Django dispatches async Celery task
↓
Frontend polls task status (PENDING → STARTED → SUCCESS)
↓
Artifact retrieved and displayed
Backend Applications
profile_app
Manages candidate profiles and MBTI data. Exposes endpoints for profile CRUD and personality type management.
technical_review
Stores skills, assessments, and project experiences. The core data source for AI generation.
applications
Handles job applications and generated documents. Manages the application lifecycle from Draft to Offer/Rejected.
dashboard
Provides summary statistics and recent activity snapshots.
Frontend State Management
- Zustand — Global state management
- Axios — API calls via a typed client supporting multiple domain-specific modules