A professional, full-featured job portal web application built with Django 5.2 and Bootstrap 5. Connect job seekers with employers in a beautiful, modern interface.
- User Management: Custom user authentication with role-based access (Job Seeker, Employer, Admin)
- Job Listings: Browse thousands of job opportunities with advanced filtering
- Job Applications: Apply directly to jobs and track application status
- Company Profiles: Employer dashboard to create and manage company profiles
- Job Posting: Employers can post new job openings with detailed information
- Resume Builder: Job seekers can create and manage professional resumes
- User Profiles: Customizable user profiles with preference management
- Modern UI/UX: Responsive design with Bootstrap 5 and smooth animations
- Create and manage company profiles
- Post job listings with detailed descriptions
- View job applications and applicants
- Manage job postings (create, edit, delete)
- Track active job listings
- Browse and search job listings
- Apply to multiple jobs
- Track application status
- Build and manage resumes
- Manage user profile and preferences
- CSRF protection
- SQL injection prevention
- XSS protection
- Secure password hashing
- Session management
- WhiteNoise for static file serving in production
- Django 5.2.8 - Python web framework
- Django REST Framework - API development
- PostgreSQL/SQLite - Database (PostgreSQL for production)
- Gunicorn - WSGI application server
- python-decouple - Environment variable management
- dj-database-url - Database URL parsing
- Bootstrap 5.3 - CSS framework
- Font Awesome 6.4 - Icon library
- CSS3 - Modern styling with animations
- JavaScript - Interactive components
- Pillow - Image processing
- WeasyPrint - PDF generation for resumes
- Django Crispy Forms - Form rendering
- WhiteNoise - Static file compression
- Python 3.11 or higher
- pip (Python package manager)
- Virtual environment (recommended)
-
Clone the repository
git clone https://github.com/yourusername/jobportal.git cd jobportal/job1 -
Create and activate virtual environment
# Windows python -m venv venv venv\Scripts\activate # macOS/Linux python3 -m venv venv source venv/bin/activate
-
Install dependencies
pip install -r requirements.txt
-
Create .env file (copy from .env.example)
cp .env.example .env
-
Run migrations
python manage.py migrate
-
Create superuser
python manage.py createsuperuser
-
Run development server
python manage.py runserver
-
Access the application
- Home: http://localhost:8000/
- Admin: http://localhost:8000/admin/
jobportal/
├── job1/ # Main Django project
│ ├── manage.py # Django management script
│ ├── requirements.txt # Python dependencies
│ ├── db.sqlite3 # SQLite database (development)
│ ├── build.sh # Render build script
│ ├── render.yaml # Render deployment config
│ ├── .env.example # Environment variables template
│ │
│ ├── job1/ # Project settings
│ │ ├── settings.py # Django configuration
│ │ ├── urls.py # URL routing
│ │ ├── wsgi.py # WSGI configuration
│ │
│ ├── templates/ # HTML templates
│ │ ├── base.html # Base template with navbar/footer
│ │ ├── home.html # Home page
│ │ ├── jobs/ # Job-related templates
│ │ ├── companies/ # Company-related templates
│ │ ├── users/ # User-related templates
│ │ └── resume_builder/ # Resume builder templates
│ │
│ ├── static/ # Static files
│ │ ├── css/ # Custom CSS
│ │ └── js/ # JavaScript files
│ │
│ ├── media/ # User-uploaded files
│ │
│ └── apps/ # Django apps
│ ├── users/ # User authentication & management
│ ├── jobs/ # Job listings & applications
│ ├── companies/ # Company profiles & management
│ ├── applicants/ # Application tracking
│ └── resume_builder/ # Resume creation & management
│
└── README.md # This file
- Admin: Full system access
- Job Seeker: Can browse jobs, apply, create resumes
- Employer: Can create company profile, post jobs, view applications
- CustomUser: Extended user model with role field
- Company: Employer company information
- Job: Job listing details
- Application: Job application tracking
- Resume: Resume information for job seekers
- Profile: User profile preferences
Create a .env file in the project root with:
# Django Settings
DEBUG=False
SECRET_KEY=your-very-secure-secret-key-here
ALLOWED_HOSTS=localhost,127.0.0.1,yourdomain.com
# Database (Optional - leave empty for SQLite)
DATABASE_URL=postgresql://user:password@host:5432/dbname
# Render.com will automatically set these:
# DATABASE_URL (PostgreSQL URL from add-on)
# SECRET_KEY (generated automatically)-
Push code to GitHub
git add . git commit -m "Prepare for Render deployment" git push origin main
-
Create Render Account
- Visit Render.com
- Sign up with your GitHub account
-
Connect GitHub Repository
- Go to Dashboard → New → Web Service
- Connect your GitHub repository
- Select the repository containing this project
-
Configure Web Service
- Name: jobportal
- Runtime: Python 3.11
- Build Command:
pip install -r requirements.txt && python manage.py collectstatic --noinput && python manage.py migrate - Start Command:
gunicorn job1.wsgi:application - Auto-deploy: Enable
-
Set Environment Variables
- Go to Environment in service settings
- Add these variables:
DEBUG=False ALLOWED_HOSTS=yourdomain.onrender.com SECRET_KEYandDATABASE_URLwill be auto-generated by Render
-
Add PostgreSQL Database (Optional but Recommended)
- Click "Add PostgreSQL" in the services panel
- Select plan (free tier available)
- Database URL will be automatically added to environment
-
Deploy
- Click "Deploy" button
- Monitor deployment logs
- Once complete, access your app at provided URL
- Auto-deploy on push: Changes pushed to main branch auto-deploy
- Free tier available: Run production apps without cost
- PostgreSQL included: Free database with web service
- SSL certificate: Automatic HTTPS for all apps
- Environment variables: Secure secret management
- Register as "Job Seeker"
- Browse job listings on the Jobs page
- Click on jobs to view details
- Click "Apply" to submit application
- Track applications in "Applications" section
- Use Resume Builder to create professional resume
- Register as "Employer"
- Create company profile with logo and description
- Go to "Post Job" to create job listings
- Add job details (title, description, salary, location, etc.)
- View posted jobs in company profile
- See applications in company dashboard
- Access Django admin at
/admin/ - Manage users, jobs, companies
- Approve/reject job listings
- Monitor applications
GET /jobs/- List all jobsGET /jobs/<id>/- Job detailsPOST /jobs/<id>/apply/- Apply to jobPOST /jobs/post/- Create new job (employer only)
GET /companies/<id>/- Company profilePOST /companies/create/- Create company (employer only)
GET /profile/- User profilePOST /login/- User loginPOST /register/- User registrationPOST /logout/- User logout
- Static files: Compressed with WhiteNoise
- Database queries: Optimized with select_related/prefetch_related
- Caching: Page-level caching enabled
- Security headers: CSP, XSS protection enabled
- CDN: Bootstrap and Font Awesome served via CDN
- Never commit
.envfile - Use.env.exampleas template - Change SECRET_KEY - Generate strong secret key for production
- Use HTTPS - Always use HTTPS in production
- Database security - Use strong passwords for PostgreSQL
- Regular updates - Keep Django and dependencies updated
Issue: Static files not loading in production
- Solution: Run
python manage.py collectstatic --noinput
Issue: Database migrations fail
- Solution: Check DATABASE_URL environment variable, ensure migrations exist
Issue: 502 Bad Gateway on Render
- Solution: Check build logs, verify Gunicorn start command
Issue: CSRF token missing
- Solution: Ensure session middleware is enabled, check CSRF_TRUSTED_ORIGINS
python manage.py shell
from jobs.models import Job, Company
from users.models import CustomUser
# Add sample data in shellpython manage.py testpython manage.py shell# SQLite
cp db.sqlite3 db.sqlite3.backup
# PostgreSQL
pg_dump databasename > backup.sql- Fork the repository
- Create feature branch:
git checkout -b feature/YourFeature - Commit changes:
git commit -m 'Add YourFeature' - Push to branch:
git push origin feature/YourFeature - Open a Pull Request
- Email notifications for applications
- Advanced job search filters
- Job recommendations based on profile
- Two-factor authentication
- Social media login integration
- Video interview capabilities
- Salary comparison tools
- Mobile app (React Native)
- Real-time notifications with WebSockets
- Analytics dashboard for employers
This project is licensed under the MIT License - see LICENSE file for details.
For issues, questions, or suggestions:
- Open an issue on GitHub
- Contact: support@jobportal.com
- Documentation: Full docs
- Django community for excellent framework
- Bootstrap team for responsive UI framework
- Font Awesome for icon library
- All contributors and users
Built with ❤️ by the JobPortal Team
Last Updated: November 2025