BlueHire is a Flask-based web app that connects blue-collar workers with employers.
It supports email/password and mobile OTP authentication, worker/employer/admin dashboards, job posting and search, basic notifications, and simple multilingual voice help (English/Hindi).
-
Authentication
- Email + password login/registration.
- Mobile number OTP login flow (demo: OTP shown on screen instead of SMS).
- Role-based dashboards: worker, employer, admin.
-
Workers
- Create/update work profile (skills, experience, preferred location).
- Browse and search jobs by skill, category, and location.
- Apply to jobs and track applications.
-
Employers
- Manage company profile.
- Post jobs with category, city, skills, salary range.
- View applications per job.
-
Admin
- Simple overview dashboard for counts of users, jobs, applications.
-
UX & Accessibility
- Mobile-first, responsive layout using Bootstrap 5.
- Material Icons and card-based UI for low-literacy friendliness.
- Voice Help via browser Speech Synthesis API (EN + HI).
-
Tech
- Flask 3, Flask-SQLAlchemy, Flask-Login.
- SQLite database (
bluehire.db).
- Python 3.10+ (recommended).
- pip and virtualenv (or
python -m venv). - Git (optional, for pushing to GitHub).
BlueHire/
app.py # Flask entrypoint using app factory
requirements.txt # Python dependencies
bluehire/
__init__.py # create_app, db, login_manager, CLI commands
models.py # User, EmployerProfile, WorkerProfile, Job, Application, OTP
auth/ # auth blueprint (login, register, OTP)
main/ # main blueprint (home, search)
employer/ # employer dashboard & job management
worker/ # worker dashboard, profile, job actions
admin/ # admin dashboard
templates/ # Jinja2 templates (Bootstrap + Material UI)
static/
css/style.css # light custom overrides on top of Bootstrap
js/voice.js # language + voice-help helper
git clone https://github.com/ikshitiz/BlueHire.git
cd BlueHireIf you are using SSH, adjust URL accordingly.
macOS / Linux:
python -m venv venv
source venv/bin/activateWindows (PowerShell):
python -m venv venv
venv\Scripts\Activate.ps1pip install --upgrade pip
pip install -r requirements.txtBy default, the app uses:
SECRET_KEY="change-this-secret-key"SQLALCHEMY_DATABASE_URI="sqlite:///bluehire.db"
For local development this is fine.
For production, override via environment variables or an instance config.
You can run via Flask CLI or directly with Python.
From the project root:
export FLASK_APP=app.py # macOS / Linux
# set FLASK_APP=app.py # Windows PowerShell
flask runVisit: http://127.0.0.1:5000
python app.pyThis uses debug=True by default for development.
The app automatically creates tables on startup.
To make the UI meaningful, you can load dummy data via a custom CLI command.
On first run, the SQLite DB (bluehire.db) will be created automatically when you start the app.
With your virtual environment active:
export FLASK_APP=app.py
flask seed-dbWhat this does:
- Adds employers in Bengaluru and Delhi with profiles.
- Adds workers with blue-collar skills such as:
- Electrician, Plumber, Driver, Carpenter, Welder, Mason,
- Security Guard, Housekeeping, Delivery Boy, AC Technician.
- Uses Indian cities like Bengaluru, Delhi, Mysuru, Mumbai, Chennai, Hyderabad, Pune, Kolkata, Jaipur, Ahmedabad for worker preferences and job locations.
- Creates sample jobs like:
- “Electrician - Residential Projects” (Bengaluru)
- “Plumber - Apartment Maintenance” (Mysuru)
- “Heavy Vehicle Driver” (Delhi)
- “Delivery Boy - E-commerce” (Mumbai)
- “Security Guard - Night Shift” (Hyderabad)
If data already exists, the command safely skips reseeding.
-
Worker
- Register with role “Worker”.
- Fill your work profile (skills, experience, preferred location).
- Use Find Jobs (or home page) to search and Apply.
- See your applications on the Worker Dashboard.
-
Employer
- Register with role “Employer”.
- Complete your Company Profile.
- Post Jobs and later view Applications per job.
-
Admin
-
Create an admin user manually via a Python shell if needed:
python >>> from bluehire import create_app, db >>> from bluehire.models import User >>> app = create_app() >>> app.app_context().push() >>> admin = User(name="Admin", email="[email protected]", role="admin") >>> admin.set_password("admin123") >>> db.session.add(admin) >>> db.session.commit()
-
Login as admin and visit
/admin/dashboard.
-
- Go to “Login with Mobile OTP”.
- Enter a phone number (matching an existing user’s phone for auto-login, or any number for demo).
- The app generates an OTP and displays it in a flash message (in real deployment, you’d send SMS).
- Enter the OTP on the next screen to log in.
- Buttons in the header let you toggle language: EN / हिन्दी.
- Voice Help button uses
speechSynthesisin the browser to read a short help message in English or Hindi.- Implemented in
static/js/voice.js. - No backend dependency; works purely on the client if the browser supports Web Speech API.
- Implemented in
- To run tests or add new ones, you can add pytest/unittest as needed (not included by default).
- For real email/SMS notifications, replace
printstatements (e.g., when a worker applies to a job) with integration to a provider (Twilio, SendGrid, etc.). - For production:
- Use a stronger
SECRET_KEY. - Consider PostgreSQL/MySQL instead of SQLite.
- Run via a WSGI server (gunicorn/uwsgi) behind Nginx or similar.
- Use a stronger
This project is intended as a learning/demo project for a blue-collar job portal.
Add your preferred license here (e.g. MIT) if you plan to open-source it.