Master navigating the sea of irrelevant jobs with JobCompass
JobCompass is an advanced job search platform that helps you find ideal positions with smart filtering capabilities, commute calculations, and personalized matching. Tell us your skills, role, and location, and we'll steer you to the right job with the least commute time.
The repo is a monorepo with a Vite/React Frontend and an Express/PostgreSQL Backend that also integrates Google Maps for transit times, RapidAPI (LinkedIn jobs), Firebase Storage for avatars, and email-based password recovery.
Connect talented professionals with opportunities that match their skills, preferences, and career goals.
- 🔍 Smart Filtering and Sorting - Filter by job type, work mode, and experience level, and sort listings based on what matters most to you
- ⚡ Smart Matching - Search and browse open roles; surface skills detected in each description.
- 🗺️ Commute Calculator - See travel time and number of transfers from your home to workplace
- ❤️ Save to Favorites - Mark interesting job posts to easily view them later
- ✉️ Password Reset - Recover account access via email with secure, short-lived tokens
- 👤 User Profiles - Customize your profile with skills, address settings, and avatar uploads
- 👥 Guest Mode - Try the platform without creating an account (with limited features)
- React 19 - UI library
- Vite - Build tool and dev server
- React Router DOM - Client-side routing
- Lucide React - Icon library
- Node.js (>=24.0.0) - Runtime environment
- Express.js - Web framework
- PostgreSQL (Neon DB) - Database
- Firebase Admin - File storage and authentication
- JWT - Token-based authentication
- bcrypt - Password hashing
- Nodemailer - Email service
- Multer - File upload handling
- Google Maps API - Commute calculations
- Husky - Git hooks
- ESLint - Code linting
- Prettier - Code formatting
- Concurrently - Run multiple commands
c53-final-project-group-A/
├── client/ # React frontend application
│ ├── src/
│ │ ├── components/ # Reusable React components
│ │ ├── pages/ # Page components
│ │ ├── context/ # React Context providers
│ │ ├── hooks/ # Custom React hooks
│ │ ├── util/ # Utility functions
│ │ └── assets/ # Static assets
│ └── package.json
├── server/ # Express backend application
│ ├── src/
│ │ ├── controllers/ # Route controllers
│ │ ├── routes/ # API routes
│ │ ├── middleware/ # Express middleware
│ │ ├── services/ # Business logic services
│ │ ├── db/ # Database configuration
│ │ ├── config/ # Configuration files
│ │ ├── data/ # Data files
│ │ └── util/ # Utility functions
│ └── package.json
├── .github/ # GitHub workflows
├── .husky/ # Git hooks
└── package.json # Root package.json with workspace scripts
POST /api/users– sign up;POST /api/users/login//logout– auth via HTTP-only cookie.GET /api/users/me– current user;PUT /api/users/profile– update profile fields.POST /api/users/update-avatar– upload avatar (Multer memory storage → Firebase Storage).POST /api/users/change-password//change-skills– profile mutations.POST /api/users/favorites/toggle– save/unsave a job;DELETE /api/users/delete/:userid– delete account.POST /api/users/forgot-password//reset-password– email reset flow.POST /api/jobs/search– search jobs (RapidAPI LinkedIn + local processing).POST /api/travel/batch– batch transit time + transfer counts for job locations.
- Node.js >= 24.0.0
- npm (comes with Node.js)
- PostgreSQL database (Neon DB recommended)
- Firebase Firebase service account (as JSON string)
- SMTP credentials
- LinkedIn Job Search RapidAPI key
- Google Maps API key for commute calculations
-
Clone the repository
git clone https://github.com/HackYourFuture/c53-final-project-group-A.git cd c53-final-project-group-A -
Install dependencies
npm run setup
This will install dependencies for both client and server.
-
Set up environment variables
In client and server directories, copy and rename the
.env.examplefiles into.env. Set all environmental variables. -
Run the development servers
npm run dev
This will start both the client (Vite dev server) and server (Express with nodemon) concurrently.
- Frontend: http://localhost:5173 (or the port Vite assigns)
- Backend: http://localhost:3000 (or your configured PORT)
npm run dev- Start both client and server in development modenpm run start- Start the production servernpm run build- Build the client for productionnpm run setup- Install dependencies for both client and server
The project is configured for Heroku deployment. The Procfile specifies the production start command.
- Create a Heroku app
- Set environment variables in Heroku dashboard
- Push to Heroku:
git push heroku main
The heroku-postbuild script will automatically:
- Install dependencies
- Build the client application
This project was developed as part of HackYourFuture's final project by:
- Yaroslav Kazeev - HYF trainee - GitHub | LinkedIn
- Hanna Dubyna - HYF trainee - GitHub | LinkedIn
- Yahya Al-Ademi - HYF trainee - GitHub | LinkedIn
- Stas Seldin - DevOps, Education Director - GitHub | LinkedIn
- Jana Gombitová - Product Owner, Scrum Master - GitHub | LinkedIn
- Tim Lorent - Tech Lead - GitHub | LinkedIn
Have questions or feedback? We would love to hear from you!
Drop us a line at [[email protected]](mailto:[email protected]?subject=Question about JobCompass) and we will get back to you as soon as possible!
ISC
- Built as part of HackYourFuture curriculum
- Special thanks to all mentors and contributors who made this project possible