Skip to content

SandyBridge101/internship-management-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽ“ Graduate Internship Program API

A secure, scalable Django REST API for managing graduate internship job postings, applications, and contact messages. This backend powers internship portals by exposing clean, well-documented RESTful endpoints with authentication, validation, and file upload support.


๐Ÿ“Œ Features

๐Ÿ”น Job Management

  • Create, update, delete, and retrieve internship job postings
  • Categorize jobs using reusable categories
  • Optional job location type (remote or hybrid)
  • Automatic job posting date
  • Public read access with protected write operations

๐Ÿ”น Job Applications

  • Submit internship applications linked to jobs
  • Resume upload with file type and size validation
  • Applicant details (name, email, university, graduation year)
  • Secure file handling

๐Ÿ”น Messages

  • Contact and enquiry message handling
  • Full CRUD support for admin review

๐Ÿ”น API Security

  • HTTP Basic Authentication
  • Role-based access using Django permissions
  • Secure endpoints protected by authentication

๐Ÿ”น API Documentation

  • Auto-generated Swagger (OpenAPI) documentation
  • Interactive API testing interface
  • Supports authentication and file uploads

๐Ÿ—๏ธ Tech Stack

  • Python 3
  • Django
  • Django REST Framework (DRF)
  • drf-yasg (Swagger / OpenAPI)
  • SQLite (default, easily swappable)

๐Ÿ“ Project Structure

internship_api/
โ”œโ”€โ”€ core/
โ”‚   โ”œโ”€โ”€ migrations/
โ”‚   โ”œโ”€โ”€ models.py
โ”‚   โ”œโ”€โ”€ serializers.py
โ”‚   โ”œโ”€โ”€ views.py
โ”‚   โ”œโ”€โ”€ urls.py
โ”‚   โ”œโ”€โ”€ validators.py
โ”‚
โ”œโ”€โ”€ internship_api/
โ”‚   โ”œโ”€โ”€ settings.py
โ”‚   โ”œโ”€โ”€ urls.py
โ”‚
โ”œโ”€โ”€ media/
โ”‚   โ””โ”€โ”€ resumes/
โ”‚
โ”œโ”€โ”€ manage.py
โ””โ”€โ”€ README.md

๐Ÿš€ Getting Started

1๏ธโƒฃ Clone the repository

git clone <repository-url>
cd internship_api

2๏ธโƒฃ Create and activate a virtual environment

python -m venv venv
source venv/bin/activate   # Windows: venv\Scripts\activate

3๏ธโƒฃ Install dependencies

pip install -r requirements.txt

4๏ธโƒฃ Run migrations

python manage.py makemigrations
python manage.py migrate

5๏ธโƒฃ Create a superuser

python manage.py createsuperuser

6๏ธโƒฃ Start the development server

python manage.py runserver

๐Ÿ“– API Documentation (Swagger)

Once the server is running, access:

URL Description
/ Swagger API Documentation
/redoc/ Redoc Documentation
/admin/ Django Admin Panel

Swagger allows:

  • Endpoint exploration
  • Authenticated API testing
  • Resume file uploads
  • Request/response previews

๐Ÿ” Authentication

This API uses Basic Authentication.

Example (curl)

curl -u username:password http://127.0.0.1:8000/api/jobs/

Example (Postman / Swagger)

  • Authorization Type: Basic Auth
  • Provide Django user credentials

โš ๏ธ Always use HTTPS in production.


๐Ÿ“ฆ API Endpoints

๐Ÿ”น Jobs

GET     /api/jobs/
POST    /api/jobs/
GET     /api/jobs/{id}/
PUT     /api/jobs/{id}/
PATCH   /api/jobs/{id}/
DELETE  /api/jobs/{id}/

๐Ÿ”น Job Applications

GET     /api/applications/
POST    /api/applications/
GET     /api/applications/{id}/
PUT     /api/applications/{id}/
PATCH   /api/applications/{id}/
DELETE  /api/applications/{id}/

๐Ÿ”น Categories

GET     /api/categories/
POST    /api/categories/

๐Ÿ”น Messages

GET     /api/messages/
POST    /api/messages/

๐Ÿ“„ Resume Upload Validation

Resumes are validated to ensure:

  • Accepted formats: PDF, DOC, DOCX
  • Maximum size: 2MB

Validation is enforced at the model level, ensuring consistency across:

  • API
  • Django Admin
  • Forms

๐Ÿง  Design Decisions

  • ModelViewSets used for clean CRUD logic
  • Many-to-Many Categories for scalability
  • Choices fields to enforce valid job location types
  • Model-level validation for strong data integrity
  • Swagger-first API documentation

๐Ÿ”ฎ Future Enhancements

  • JWT authentication
  • Application status tracking
  • Email notifications on application submission
  • Job expiration and deadlines
  • Admin analytics dashboard
  • Cloud storage for resumes (AWS S3 / Cloudinary)

๐Ÿ“œ License

This project is released under the MIT License.


๐Ÿ‘ค Author

Developed as a graduate internship backend system for GradCell.

About

A secure and scalable Django REST API for managing graduate internship jobs, applications, and contact messages, with built-in file uploads, category management, and Swagger documentation.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages