65 lines
2.2 KiB
Markdown
65 lines
2.2 KiB
Markdown
# JobsBoard — Self-Hosted Job Aggregator & ATS Resume Platform
|
|
|
|
A private, multi-user job aggregation and ATS-friendly resume management platform tailored for personal and family use.
|
|
|
|
## Architecture
|
|
|
|
- **Web Application:** Next.js (App Router), React, Tailwind CSS, Lucide React, TypeScript.
|
|
- **Database & ORM:** PostgreSQL 16 with Prisma ORM.
|
|
- **Authentication:** Auth.js / NextAuth (Credentials provider with bcrypt password hashing).
|
|
- **Resume Engine:** ATS-compliant live two-pane editor & `@react-pdf/renderer` PDF download generator.
|
|
- **Scraper Worker:** Python worker container using `python-jobspy` (Indeed, LinkedIn, ZipRecruiter) and custom scrapers (State of Connecticut JobAps portal) with automatic deduplication.
|
|
- **Matching Engine:** Local keyword & TF-IDF similarity matcher scoring job postings (0-100%) against user active resumes without paid external APIs.
|
|
|
|
## Quick Start (Docker Compose)
|
|
|
|
Launch the complete stack (Database, Web App, Scraper Worker) with a single command:
|
|
|
|
```bash
|
|
docker-compose up --build -d
|
|
```
|
|
|
|
- **Web Interface:** [http://localhost:3000](http://localhost:3000)
|
|
- **Database:** PostgreSQL on `localhost:5432`
|
|
|
|
## Local Development Setup
|
|
|
|
### 1. Install Web Dependencies & Initialize Prisma
|
|
|
|
```bash
|
|
cd web
|
|
npm install
|
|
npx prisma generate
|
|
```
|
|
|
|
### 2. Environment Variables
|
|
|
|
Create `.env` inside `/web`:
|
|
|
|
```env
|
|
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/jobsboard?schema=public"
|
|
NEXTAUTH_SECRET="jobsboard-secret-key-for-auth-sessions"
|
|
NEXTAUTH_URL="http://localhost:3000"
|
|
```
|
|
|
|
### 3. Run Web App
|
|
|
|
```bash
|
|
cd web
|
|
npm run dev
|
|
```
|
|
|
|
### 4. Run Python Scraper Worker (Optional standalone)
|
|
|
|
```bash
|
|
cd scraper
|
|
pip install -r requirements.txt
|
|
python main.py --once
|
|
```
|
|
|
|
## Features Overview
|
|
|
|
1. **Job Aggregation & Search:** Aggregates CT local positions and nationwide remote jobs. Filter by Remote, Connecticut Only, minimum pay, and job sources.
|
|
2. **ATS Resume Builder:** Live form input with instantaneous ATS preview & one-click ATS-compliant PDF export.
|
|
3. **Resume Matching:** Toggle "Match to My Active Resume" on the job feed to view similarity badges on each job card.
|
|
4. **Application Tracker:** Bookmark jobs ("Saved"), track status ("Applied", "Interviewing", "Rejected"), and link directly to application portals.
|