A full-stack web platform connecting job seekers with companies. Candidates build profiles, practice AI-driven interviews, and get feedback. Companies post jobs, browse candidates, and manage applications.
- Frontend: React.js (Vite) + Tailwind CSS
- Backend: Node.js + Express
- Databases: MySQL (structured data) + MongoDB (interviews, documents)
- Authentication: JWT-based auth
- AI Services: OpenAI, D-ID/Synthesia, ElevenLabs
job-platform/
├── backend/
│ ├── src/
│ │ ├── config/ # Database configurations
│ │ ├── controllers/ # Route controllers
│ │ ├── middleware/ # Auth middleware
│ │ ├── models/ # MongoDB models
│ │ ├── routes/ # API routes
│ │ ├── services/ # Business logic
│ │ └── server.js # Entry point
│ ├── migrations/ # Database migrations
│ └── package.json
├── frontend/
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API client
│ │ ├── context/ # React context
│ │ └── App.jsx # Main app
│ └── package.json
├── .env.example
└── README.md
- Node.js 18+
- MySQL 8.0+
- MongoDB 6.0+
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../frontend
npm installCopy .env.example to .env in both backend and root directories:
# Backend
cp backend/.env.example backend/.env
cp .env.example .envUpdate the .env files with your actual credentials:
Required Keys:
MYSQL_HOST,MYSQL_USER,MYSQL_PASSWORD,MYSQL_DB- MySQL connectionMONGO_URI- MongoDB connection string
Optional (for full functionality):
OPENAI_API_KEY- For AI interview feedbackD_ID_API_KEYorSYNTHESIA_API_KEY- For AI avatar videosELEVENLABS_API_KEY- For voice generationAWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_S3_BUCKET- For file storage
# Create MySQL database and tables
cd backend
npm run migrate
# Seed initial data (optional)
npm run seed# Start backend (from backend directory)
npm run dev
# Start frontend (from frontend directory)
cd ../frontend
npm run dev- Backend runs at: http://localhost:5000
- Frontend runs at: http://localhost:5173
POST /api/auth/register- Register new userPOST /api/auth/login- Login userGET /api/auth/me- Get current user
GET /api/jobseeker/profile- Get profilePUT /api/jobseeker/profile- Update profilePOST /api/jobseeker/resume/generate- Generate PDF resumePOST /api/jobseeker/video/generate- Generate AI video introGET /api/jobseeker/dashboard- Get dashboard stats
GET /api/interview/questions- Get interview questionsPOST /api/interview/session/start- Start interview sessionPOST /api/interview/session/answer- Submit answerPOST /api/interview/session/end- End sessionGET /api/interview/session/history- Get past sessions
GET /api/jobs- List jobs (with filters)GET /api/jobs/:id- Get job detailsPOST /api/jobs/:id/apply- Apply to jobGET /api/jobs/my-applications- Get my applications
GET /api/company/profile- Get company profilePUT /api/company/profile- Update companyPOST /api/company/jobs- Create jobGET /api/company/jobs/:id/applicants- Get applicantsGET /api/company/candidates/search- Search candidates
All API keys are stored in environment variables with placeholder comments in the code. To enable AI features:
-
OpenAI (
src/services/aiService.js):- Replace
OPENAI_API_KEYin.env - The code uses GPT-4 for interview feedback
- Replace
-
D-ID / Synthesia (
src/services/videoGenerator.js):- Replace
D_ID_API_KEYorSYNTHESIA_API_KEYin.env - Currently returns placeholder response until valid key is provided
- Replace
-
AWS S3 (
src/services/storageService.js):- Replace AWS credentials in
.env - Currently returns mock URLs until valid credentials provided
- Replace AWS credentials in
- Passwords are hashed with bcrypt
- JWT tokens are used for authentication
- CORS is configured for frontend origin only
- Input validation with express-validator
- All sensitive keys are in environment variables
- Build and edit professional profile
- Add education, experience, skills, certifications
- Generate PDF resume from profile
- Practice AI-powered interviews
- Get instant feedback on answers
- Browse and apply to jobs
- Track application status
- Create and manage company profile
- Post job listings
- View and search candidates
- Review applicant profiles
- Update application status
MIT