A streamlined interview management system that helps HR teams manage interview rounds, candidates, and job postings efficiently.
Candidate and Interview Management
Role-Based Staff Permissions
Job Posting & Position Tracking
Automated Interview Scheduling
CI/CD Pipeline for Deployment
Fully Dockerized Setup
Clone the repository:
git clone https://github.com/yourusername/interview-management-tool.git
cd interview-management-tool
Set up the environment (choose one):
Local: pip install -r requirements/local.txt
Production: pip install -r requirements/base.txt
Run the project:
Django Server: python manage.py runserver
🔧 Installation (Local, CI/CD, and Production)
CI/CD Pipeline
pip install -r requirements/testing.txt
Local Development
pip install -r requirements/local.txt
Production
pip install -r requirements/base.txt
Environment Variables (.env)
Note: (create inside dir "imt")
Mandatory fields and their examples
SECRET_KEY=some_real_secret
DEBUG=False # Caps bool
DJANGO_ENV=local/default # Available options: local, default
ALLOWED_HOSTS="127.0.0.1,localhost" # comma separated ip addresses
Code Quality & Linting:
The project is equipped with flake8. It helps identify errors against PEP8 standard and much more.
Run the linter using:
flake8
The tests are located under imt/tests
.
Run tests inside the imt
directory:
pytest
pytest -s # To see prints too
pytest -s -k "keyword" # Run tests matching a keyword
coverage run -m pytest # Run with coverage
coverage report # View coverage summary
coverage html # Generate an HTML coverage report
Stack Overflow: Specify which pytest tests to run
You can run the project in two ways:
Option 1: Using Django Development Server
cd imt
python manage.py runserver
Option 2: Using Docker
docker run
docker compose up --build # Visit docs folder to know more.
Check existing APIs here. Note: Create a user so as to generate a token to call APIs.
Visit the admin site to browse data. Note: Create a superuser or admin staff to login to admin.
To generate test data, run the following commands in this order:
python .\manage.py create_staffs 5
python .\manage.py generate_skills
python .\manage.py create_candidates 20
python .\manage.py create_positions 3 (Run it more times if you need more than created.)
python .\manage.py create_openings 3
python .\manage.py create_applications 50
📄 The full documentation is available in the docs/ directory.
Arindam Roychowdhury Want to contribute? Feel free to open an issue or submit a pull request!
This project is licensed under the MIT License. See LICENSE for details.