Skip to content
← All work

Personal project · Full-stack

Job Application Tracker

A full-stack tracker for co-op applications, with a full history of every status change.

Year
2026
Stack
Next.js, TypeScript, Express, PostgreSQL, Prisma, Docker

The problem

Co-op season means dozens of applications at once, each moving through its own stages. A spreadsheet only tells you where things stand today, not how they got there.

What I built

A Next.js front end over an Express and TypeScript REST API with 11 endpoints. Every user route is behind JWT authentication with bcrypt-hashed passwords, and the data lives in PostgreSQL, modelled with Prisma across 5 related entities.

A decision worth explaining

Log every status change, not just the current one

Status transitions are written to a history table automatically, so the full path of an application (applied, interview, offer) is kept instead of being overwritten by its latest state.

Outcomes

  • Front end, API and database deployed separately on Vercel, Render and Neon.
  • Prisma migrations run automatically on every deploy.
  • Cross-origin auth configured between the separately hosted services.