A web application to find real job postings, built for CS673 Software Engineering at Boston University.
The app uses the Rise Jobs API to fetch live listings and provides a simple, fast interface to search and filter roles.
- Pedro Ramirez
- Gopi Rayini
- Qi Chen
- Stacey Burns
- Yongxiang Chen
- James Rose
This project is a job search application aimed at helping individuals stay organized in their career search by saving, applying to, and tracking jobs in one place. The motivation is to provide users with a simple system to manage applied jobs instead of relying on scattered tools. Its purpose is to connect employers and employees, with potential users being anyone on the job market. Core functionality includes creating user accounts, viewing and searching job posts, saving and applying to jobs, and tracking the status of applications.
- Frontend: React 19, TypeScript 5.8, Vite 7
- Backend: Java with Spring Boot
- Database: MySQL 8.4
- Data Source: Rise Jobs API
- Styling: Bootstrap 5, React Bootstrap
- Fetch and display real job postings from Rise Jobs API
- Keyword search and filtering (job type, location)
- User accounts & authentication
- Save jobs and track application status
- Responsive design for desktop and mobile
Frontend (React + TypeScript)
└── API Proxy (Express.js) - In production
└── Java Spring Boot Backend (REST)
├── Rise Jobs API (external data)
└── MySQL Database (users, saved jobs, applications)
- Node.js 18+ and npm
- Java 17+
- Docker and Docker Compose (optional, for containerized setup)
- MySQL 8+ (if running locally without Docker)
# Navigate to frontend directory
cd code/frontend
# Install dependencies
npm install
# Start development server
npm run devThe development server will run on http://localhost:5173 by default.
The frontend application uses the following environment variables:
VITE_API_BASE_URL: Points to the backend API URL (default: http://localhost:8080/api)
You can create a .env.local file in the code/frontend directory to override these settings:
# Example .env.local
VITE_API_BASE_URL=http://localhost:8080/api
# Run development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Type checking
npm run typecheck
# Lint code
npm run lint
# Run tests
npm run test
# Run tests with coverage
npm run test:ciThe frontend test suite lives under code/frontend/src/tests. We use Jest with ts-jest and React Testing Library.
Run locally:
cd code/frontend
npm install
npm run testRun in Docker (for screenshots or CI):
# from repository root
docker compose build frontend-tests
docker compose run --rm frontend-testsNotes:
- Tests run in a jsdom environment with a dedicated
tsconfig.jest.json. src/tests/setupTests.tssets up jest-dom and polyfills TextEncoder/Decoder used by react-router.- The Docker image for tests is defined by
code/frontend/Dockerfile.testand invoked via thefrontend-testsservice indocker-compose.yml.
You can run the entire application stack (frontend, backend, and database) using Docker Compose:
# From the repository root
docker compose up -dThis will start:
- MySQL database on port 3306
- Spring Boot backend on port 8080
- Frontend tests can be run separately with
docker compose run --rm frontend-tests
The project includes an API proxy in the code/api-proxy directory that helps with:
- CORS issues during development
- Routing requests to the deployed backend
To use it:
cd code/api-proxy
npm install
npm startThe API proxy runs on port 5179 by default and forwards requests to the backend.
When running the application with Docker Compose, the MySQL database is automatically configured. You can connect to it using:
- Host: localhost
- Port: 3306
- Username: cf_user
- Password: secret
- Database: careerforge
To connect to the remote database, you will need to download access key EC2 Access.pem (ask Gopi for the file).
- Run the command
ssh -i "address_to_pem_file" -N -L 13306:careerforgedb.ckt4mmg2etgw.us-east-1.rds.amazonaws.com:3306 [email protected]. Or you can run the scriptaws_rds_connection.ps1underscriptsif you are using Windows. By running this command, you should put your pem file underscriptsfolder.
The application is deployed on Render:
- Frontend: https://cs673olfall25-team2.onrender.com
- API Proxy: https://cs673olfall25-team2-proxy.onrender.com
- Backend: Deployed on EC2 (accessed through the API proxy)
- Now you are all set.
Modify application.properties. DO NOT commit them. Only use these settings on your computer.
- Check the configuration in
spring.datasource.url, current port is13306, and current database iscareerforge. - Check the username
spring.datasource.usernameand passwordspring.datasource.password. - Create a database on your local Mysql named
careerforge. Run the initialization scriptcode/backend/src/main/resources/db/initialization.sqlfor database setup.
client/ # React + TypeScript app
server/ # Java backend (to be added)
This project uses job data via the Rise Jobs API: https://pitchwall.co/product/rise-jobs-api. Please review and respect the provider’s terms of service and attribution guidelines.
-
Development: No setup required!
The app auto-generates a secure secret on first run and saves it to~/.jwt-secret. -
Production: You must provide a real secret via
- Environment variable:
APP_JWT_SECRET, or - Spring property:
app.jwt.secret
- Environment variable:
If no secret is provided in production, the app will fail to start.
For educational use as part of BU CS673 course project.