🐍 Backend API Server

Django REST Framework

A robust and scalable backend API built with Django REST Framework, featuring JWT authentication, role-based access control, and comprehensive endpoints for all application functionality.

🛠️ Backend Technology Stack

Core Technologies

  • Python 3.8+ - Modern Python features
  • Django 4.2 - Web framework
  • Django REST Framework - API framework
  • JWT Authentication - Secure token-based auth
  • PostgreSQL - Production database
  • CORS Headers - Cross-origin security

Additional Features

  • File Upload - Resume & document handling
  • Role-based Access - Permission system
  • Advanced Filtering - Job search capabilities
  • Email Integration - Notification system
  • Timezone Support - Global compatibility
  • Analytics - Data insights

📁 Backend Structure

backend/
core/ Main Django Project Settings
settings.py Django configuration
urls.py Main URL routing
wsgi.py WSGI application
users/ User Management & Authentication
models.py User model with roles
views.py Authentication endpoints
serializers.py Data serialization
companies/ Company Management
models.py Company data models
views.py Company CRUD operations
jobs/ Job Posting & Management
models.py Job posting models
views.py Job management endpoints
filters.py Advanced job filtering
applications/ Job Application Tracking
models.py Application models
views.py Application management
manage.py Django management script
requirements.txt Python dependencies

🔗 API Endpoints

Authentication APIs

  • POST /api/auth/login/ - User login
  • POST /api/auth/register/ - User registration
  • POST /api/auth/refresh/ - Token refresh
  • POST /api/auth/logout/ - User logout
  • GET /api/auth/me/ - Current user info

User Management APIs

  • GET /api/users/ - List users
  • POST /api/users/ - Create user
  • GET /api/users/{id}/ - User details
  • PUT /api/users/{id}/ - Update user
  • DELETE /api/users/{id}/ - Delete user

Company APIs

  • GET /api/companies/ - List companies
  • POST /api/companies/ - Create company
  • GET /api/companies/{id}/ - Company details
  • PUT /api/companies/{id}/ - Update company
  • GET /api/companies/{id}/users/ - Company users

Job APIs

  • GET /api/jobs/ - List jobs (with filters)
  • POST /api/jobs/ - Create job posting
  • GET /api/jobs/{id}/ - Job details
  • PUT /api/jobs/{id}/ - Update job
  • GET /api/jobs/search/ - Advanced search

Application APIs

  • GET /api/applications/ - List applications
  • POST /api/applications/ - Submit application
  • GET /api/applications/{id}/ - Application details
  • PATCH /api/applications/{id}/ - Update status
  • POST /api/applications/{id}/resume/ - Upload resume

Analytics APIs

  • GET /api/analytics/dashboard/ - Dashboard stats
  • GET /api/analytics/jobs/ - Job statistics
  • GET /api/analytics/applications/ - Application metrics
  • GET /api/analytics/companies/ - Company insights

🔧 Backend Features

JWT Authentication

Secure token-based authentication with access and refresh tokens, automatic token validation, and role-based permissions.

Role-Based Access Control

Four distinct user roles (Superuser, Company User, HR User, Job Seeker) with granular permissions and data isolation.

Data Models

Well-designed database schema with proper relationships, constraints, and indexes for optimal performance.

Advanced Filtering

Comprehensive job search with filters for location, salary, experience level, job type, and company.

File Management

Secure file upload handling for resumes and documents with validation, storage optimization, and access control.

RESTful APIs

Well-structured REST APIs following best practices with proper HTTP methods, status codes, and error handling.

🗄️ Database Models

# Core Models Structure User Model: - id, email, password, role, is_active - first_name, last_name, phone - created_at, updated_at Company Model: - id, name, description, website - address, industry, size - created_at, updated_at Job Model: - id, title, description, requirements - salary_min, salary_max, location - job_type, experience_level - company (FK), created_by (FK) - is_active, created_at, updated_at Application Model: - id, job (FK), applicant (FK) - status, cover_letter, resume - applied_at, updated_at

💻 Development Commands

# Setup virtual environment python -m venv virtual source virtual/bin/activate # Linux/Mac virtual\Scripts\activate # Windows # Install dependencies pip install -r requirements.txt # Database setup python manage.py makemigrations python manage.py migrate # Create superuser python manage.py createsuperuser # Run development server python manage.py runserver # Run tests python manage.py test