Architecture

Technical architecture overview of the WXRK platform.

Core Concepts

The system distinguishes between two key entities:

EntityLayerDescription
UserAuth LayerDjango's authentication record handling login and sessions
CandidateDomain LayerCandidateProfile storing CV data, MBTI assessments, and job applications

Authentication code says "user"; business logic says "candidate."

Technology Stack

LayerTechnology
FrontendNext.js 14 (React)
BackendDjango 4.x + Django REST Framework
DatabasePostgreSQL
Task processingCelery + Redis
PDF generationWeasyPrint
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