SmartHire is a Flask-based job portal for job seekers, employers, and administrators. It supports user registration and login, job posting, job search, applications, applicant pipelines, interviews, company pages, profile connections, chat, analytics, and CSV reports.
- Role-based dashboards for admins, employers, and job seekers
- Job browsing, filtering, detail pages, and applications
- Employer job posting, applicant management, status updates, and interview scheduling
- Job seeker profiles with skills, experience, education, applications, and interviews
- Company pages with follow/unfollow support
- Public profiles, connections, endorsements, and messaging
- Admin views for users, jobs, applications, categories, and analytics
- CSV reports for users, jobs, applications, and job applicants
- Python
- Flask
- Flask-SQLAlchemy
- Flask-Login
- MySQL
- PyMySQL
SmartHire/
+-- app/
| +-- admin/ # Admin dashboard and management routes
| +-- auth/ # Login, registration, logout
| +-- chat/ # Conversations and messages
| +-- company/ # Company pages and followers
| +-- employer/ # Employer dashboard, jobs, applicants, interviews
| +-- main/ # Home, job listing, job details
| +-- profile/ # Public profiles, connections, endorsements
| +-- reports/ # CSV report exports
| +-- seeker/ # Seeker dashboard, profile, applications, interviews
| +-- templates/ # Jinja templates
| +-- __init__.py # Flask app factory and blueprint registration
| +-- models.py # SQLAlchemy models
+-- config.py # App configuration
+-- requirements.txt # Python dependencies
+-- run.py # Development entry point
+-- seed.py # Demo data reset/seed script
+-- smarthire_import.sql
- Python 3.10 or newer
- MySQL server, for example through XAMPP
- A MySQL database named
smarthire
- Create and activate a virtual environment.
python -m venv venv
.\venv\Scripts\Activate.ps1- Install dependencies.
pip install -r requirements.txt- Create the database in MySQL.
CREATE DATABASE smarthire;- Configure database access.
By default, config.py uses:
mysql+pymysql://root:@localhost/smarthire
To override it, set DATABASE_URL before running the app:
$env:DATABASE_URL = "mysql+pymysql://user:password@localhost/smarthire"You can also override the Flask secret key:
$env:SECRET_KEY = "your-secret-key"python run.pyThe app will create missing tables automatically, then start the Flask development server. Open the URL shown in the terminal, usually:
http://127.0.0.1:5000
To reset all tables and load demo data:
python seed.pyThis script drops existing tables before recreating them, so use it only for local development or demos.
Sample seeded accounts:
| Role | Password | |
|---|---|---|
| Admin | admin@smarthire.com |
admin123 |
| Employer | tech@company.com |
employer123 |
| Seeker | john@seeker.com |
seeker123 |
| Area | Route |
|---|---|
| Home | / |
| Jobs | /jobs |
| Login | /auth/login |
| Register | /auth/register |
| Admin dashboard | /admin/dashboard |
| Employer dashboard | /employer/dashboard |
| Seeker dashboard | /seeker/dashboard |
| Chat inbox | /chat/inbox |
| Reports | /reports/applications, /reports/jobs, /reports/users |
run.pyis intended for local development.- The app expects a running MySQL server and a
smarthiredatabase. seed.pyprovides realistic demo content, including users, jobs, applications, conversations, and interviews.- Avoid committing real secrets. Use environment variables for production credentials.