Track job applications with a pipeline Sankey diagram and build a resume with PDF download. Roadmap: multi-tenant SaaS on PostgreSQL (free tier now, Stripe Pro later).
| Doc | Description |
|---|---|
| docs/PLAN.md | Master phase list and route map |
| docs/SAAS.md | SaaS direction, Postgres, auth/billing decisions |
| docs/DATABASE.md | Prisma Postgres setup (Vercel + local) |
| docs/AGENT.md | One-phase-per-chat playbook |
| docs/phases/ | Checklists for phases 6–12 |
| docs/ASSETS.md | Icons & illustration licenses |
Next implementation step: Phase 9 — Polish
Uses the same database as Vercel (no Docker required). Full steps: docs/DATABASE.md.
- Vercel project → Storage → Create Database → Prisma Postgres.
- Storage → your DB → Connect → select this project (
DATABASE_URLis set automatically). - Prisma Console → copy direct URL → add as
DIRECT_URLin Vercel env vars.
cp .env.example .envPaste DATABASE_URL and DIRECT_URL from Vercel / Prisma Console into .env.
npm install
npm run db:migrate:deploy # once: create tables
npm run devOpen http://localhost:3000. Health: GET /api/health.
| Command | Description |
|---|---|
npm run dev |
Start dev server |
npm run build |
Production build |
npm run db:generate |
Regenerate Prisma client |
npm run db:migrate |
Create migrations locally (migrate dev) |
npm run db:migrate:deploy |
Apply migrations (prod / first setup) |
npm run db:studio |
Open Prisma Studio |
/— marketing landing (public)/login,/signup— account access/privacy,/terms— legal placeholders/dashboard— signed-in home overview/pipeline— job application pipeline/pipeline/analytics— Sankey flow/resume— resume library (built resumes + PDF uploads)/profile— career profile and account (/settingsredirects here)
Full route map: docs/PLAN.md.
Protect /api/auth/* on Vercel with Firewall rules or an edge rate limiter (e.g. Upstash). A simple starting point: limit sign-in/sign-up POSTs per IP in the Vercel dashboard under Security → Firewall.
- Push to GitHub and import on Vercel.
- Storage → Prisma Postgres → Connect to the project.
- Set
DIRECT_URL(direct connection from Prisma Console) if not present. - Run migrations once locally:
npm run db:migrate:deploy(or addprisma migrate deploy &&to the build script). - Redeploy and check
GET /api/health.
prisma generate runs via postinstall.
Uploaded PDFs use Vercel Blob with a private store.
- In the Vercel project, open Storage → create or connect a Blob store.
- Copy the
BLOB_READ_WRITE_TOKENinto Vercel env vars and local.env. - Restart
npm run devafter setting the token.
Without the token, built resumes still work; PDF upload fails with a clear error.
- Next.js 16, React 19, MUI (Material UI)
- Prisma 7 + Prisma Postgres (
@prisma/adapter-pg) - SaaS phases: Auth.js (7), Stripe (11) — see docs/SAAS.md