HomeProjectsAbout Contact PT
Personal Project · Open Source
APP

Job
Tracker

An open-source kanban board to track job applications: each job posting is a card that moves through fixed stages of the hiring process, with a per-card event timeline and automatic history. Built to organize my own job search.

01
// About the project
What was built

Job Tracker is a kanban board to track job applications: each job posting is a card that moves through fixed stages of the hiring process (Interested → Applied → In Process → Offer → Closed), with a per-card event timeline and automatic history on every stage change.

I built the project to organize my own job search, and decided to keep the code open source as a sample of how I structure a full-stack project from scratch: custom cookie-session authentication, Google login, PostgreSQL persistence with raw SQL and versioned migrations, and a real integration test suite against a Postgres instance in Docker.

The repository runs a full CI pipeline on every pull request: Jest tests, ESLint and Prettier linting, Secretlint secret scanning, and continuous deployment on Vercel.

02
// Challenges
What made the project difficult
// Modeling
Fixed stages and events
Modeling the domain so every stage change automatically generates a timeline event, without duplicating logic between the card and its history.
// Auth
Custom sessions + Google
Implementing cookie-based sessions with bcrypt and a pepper from scratch, and integrating Google OAuth login, keeping both auth paths consistent.
// Testing
TDD end to end
Every endpoint is born with a success and an error test before the production code, running against a real Next.js server and a real Postgres via Docker.
// CI
Full pipeline
Setting up Jest, ESLint, Prettier, Secretlint, and Vercel preview deploys to run automatically on every pull request, without adding friction to my own commit workflow.
03
// Tools
Technical stack
Next.js
PostgreSQL
Jest
Docker
Google OAuth
GitHub Actions
Vercel
04
// Outcome
What I learned
01
Building your own tool: using a personal project to solve a real day-to-day problem makes every product decision more concrete.
02
CI from the first commit: setting up linting, tests, and secret scanning early prevents problems from piling up as the project grows.
03
Open source raises the quality bar: knowing the repository is public reinforces discipline around tests, commits, and documentation.
04
TDD reduces rework: writing the test before the endpoint makes the exact shape of the response clear before implementing any logic.
← Previous Project
5 Minutos Com Deus
Next Project →
Out Of The Box