A fully-featured, open-source job-posting portal built with Django, offering unlimited free job listings, social authentication, and seamless integrations.
🔗 Documentation
Read the user guide and developer API docs on Read the Docs:
https://opensource-job-portal.readthedocs.io/en/latest/
For Recruiters
- Register via email/password or Google OAuth
- Post, copy, deactivate, and manage job listings
- Share jobs to Facebook, Twitter, and LinkedIn
- Add “Walk-in” events with location via Google Maps integration
For Job Seekers / Portal Users
- Real-time job alerts by email
- Responsive “new mobile” design
- Keyword-based and advanced search filters
- Save favorite jobs and application history
Under the Hood
- Full-text search powered by Elasticsearch
- Asynchronous tasks via Redis + Celery
- Caching with Memcached for blazingly fast page loads
- RESTful JSON APIs for third-party integrations
- Backend: Python 3.x, Django
- Frontend: HTML5, CSS3, Bootstrap, Less/Sass
- Database: PostgreSQL
- Search: Elasticsearch
- Caching / Message Broker: Redis, Memcached
- Containerization: Docker
- CI/CD: Travis CI, Coveralls
- Ubuntu 20.04 (or compatible Linux distro)
- Python 3.8+ &
pip
- PostgreSQL
- Node.js &
npm
- Docker & Docker Compose
- Ruby &
gem
(for Sass)
- System packages
sudo apt update sudo apt install -y git postgresql python3-dev python3-venv build-essential redis-server memcached npm ruby-full
- Node.js & Less
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get install -y nodejs sudo npm install -g less
- Sass compiler
sudo gem install sass
- Docker (optional, for Elasticsearch)
Run Elasticsearch:
sudo apt install -y docker.io sudo usermod -aG docker $USER newgrp docker
docker run -d --name elasticsearch -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.17.6
- Clone the repo:
git clone https://github.com/MicroPyramid/opensource-job-portal.git cd opensource-job-portal
- Create and activate a virtual environment:
python3 -m venv venv source venv/bin/activate
- Copy the example env file and generate a secret key:
cp env.md .env sed -i 's/^SECRET_KEY=.*/SECRET_KEY="$(openssl rand -base64 50)"/' .env
- Install Python dependencies:
pip install --upgrade pip pip install pipdeptree black pip-check pip install -r requirements.txt
- Switch to the
postgres
user and set a password if needed:sudo -u postgres psql ALTER USER postgres PASSWORD 'your_secure_password'; \q
- Create the database and import schema/data:
sudo -u postgres createdb peeljobs sudo -u postgres psql peeljobs < init_db/db_init.sql
- Load initial fixtures:
python manage.py migrate for fixture in industries qualification skills countries states cities; do python manage.py loaddata $fixture done
- Build front-end assets:
npm run build
- Update the Elasticsearch index:
python manage.py update_index
- Create an admin user:
python manage.py createsuperuser
- Start the development server:
python manage.py runserver 0.0.0.0:8000
Visit http://localhost:8000 to see the portal in action!
- Post a Job: Log in as a recruiter → Dashboard → “Post New Job”
- Search Jobs: Enter keywords or filters on the homepage
- Receive Alerts: Opt in for email notifications on your profile
- Manage Listings: Copy, deactivate, or edit existing job posts
For detailed API docs and integration guides, see the Read the Docs site:
https://opensource-job-portal.readthedocs.io/en/latest/
- Fork the repository
- Create a feature branch (
git checkout -b feature/awesome-feature
) - Commit your changes (
git commit -m "Add awesome feature"
) - Push to your fork (
git push origin feature/awesome-feature
) - Open a Pull Request
Please run black .
and pipdeptree
before submitting. All new features should include tests.
This project is licensed under the MIT License. See LICENSE for details.
Happy coding! 🚀