No description
Find a file
JobsBoard Deployer 50b8524775 feat(email): route outbound mail through Proton Mail Bridge SMTP; feat(apply): route one-click apply to employer site
Email:
- Add nodemailer; rewrite lib/email.ts to send via configured SMTP (Proton
  Mail Bridge) first, Resend fallback, then dev simulation.
- Forward SMTP_* env to web and add protonmail-bridge service in compose.
- Document Proton Bridge SMTP vars in .env.example files; add test-smtp.mjs.

Apply:
- OneClickApplyModal now opens the job's real posting URL (company/ATS site)
  in a new tab as the primary action when jobUrl is present, and records the
  external application so the card shows 'Applied'.
- Internal one-click snapshot flow retained for jobs without an external URL.
- POST /api/applications accepts external:true (skips profile completeness)
  and records an external application.
2026-09-07 14:46:57 -04:00
scraper Enhance remote categorization and prevent false remote classifications across all scrapers 2026-09-05 15:53:28 -04:00
web feat(email): route outbound mail through Proton Mail Bridge SMTP; feat(apply): route one-click apply to employer site 2026-09-07 14:46:57 -04:00
.env.example feat(email): route outbound mail through Proton Mail Bridge SMTP; feat(apply): route one-click apply to employer site 2026-09-07 14:46:57 -04:00
.gitignore feat: complete production-ready JobsBoard stack with multi-source acquisition and ATS optimizer 2026-09-05 10:41:18 -04:00
BETA_OPERATIONS_MANUAL.md feat: complete production-ready JobsBoard stack with multi-source acquisition and ATS optimizer 2026-09-05 10:41:18 -04:00
BETA_RUNBOOK.md feat: complete production-ready JobsBoard stack with multi-source acquisition and ATS optimizer 2026-09-05 10:41:18 -04:00
BETA_TESTING_GUIDE.md feat: complete production-ready JobsBoard stack with multi-source acquisition and ATS optimizer 2026-09-05 10:41:18 -04:00
DEPLOYMENT.md feat: complete production-ready JobsBoard stack with multi-source acquisition and ATS optimizer 2026-09-05 10:41:18 -04:00
DEPLOYMENT_RUNBOOK.md feat: complete production-ready JobsBoard stack with multi-source acquisition and ATS optimizer 2026-09-05 10:41:18 -04:00
docker-compose.yml feat(email): route outbound mail through Proton Mail Bridge SMTP; feat(apply): route one-click apply to employer site 2026-09-07 14:46:57 -04:00
package.json feat: complete production-ready JobsBoard stack with multi-source acquisition and ATS optimizer 2026-09-05 10:41:18 -04:00
PHASE9_RUNBOOK.md feat: complete production-ready JobsBoard stack with multi-source acquisition and ATS optimizer 2026-09-05 10:41:18 -04:00
postgres-entrypoint.sh fix(db): derive DATABASE_URL from POSTGRES_PASSWORD and harden credential sync 2026-09-07 13:06:42 -04:00
README.md feat: complete production-ready JobsBoard stack with multi-source acquisition and ATS optimizer 2026-09-05 10:41:18 -04:00
ROLLBACK_RUNBOOK.md feat: complete production-ready JobsBoard stack with multi-source acquisition and ATS optimizer 2026-09-05 10:41:18 -04:00
RUNBOOK.md feat: complete production-ready JobsBoard stack with multi-source acquisition and ATS optimizer 2026-09-05 10:41:18 -04:00

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:

docker-compose up --build -d

Local Development Setup

1. Install Web Dependencies & Initialize Prisma

cd web
npm install
npx prisma generate

2. Environment Variables

Create .env inside /web:

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

cd web
npm run dev

4. Run Python Scraper Worker (Optional standalone)

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.