No bloat. No ads. No subscriptions.
Runs on your machine or server.
Track applications across platforms, manage companies, schedule interviews, and see where your pipeline stands. All in one place.
WIP. This is a work in progress. The project is not yet ready for production, breaking changes are possible. It is stable to use. Database migrations support schema updates across versions.
| Layer | Tech |
|---|---|
| Frontend | Next.js 16, React 19, Tailwind CSS, shadcn/ui, Turborepo |
| Backend | FastAPI, SQLAlchemy, Alembic |
| Data | PostgreSQL |
| Runtime | Docker |
| Testing | Vitest + React Testing Library, Pytest |
Default home when you load the app (/dashboard).
- Application count (with offers/rejections), response rate, average days per stage
- Week strip of upcoming appointments
- Stage distribution (pie chart), recent applications, platform conversion ranking, weekly heatmap
- Hide any widget from Settings
Primary list for every application you track.
- Filter by status, stage, platform, company, and active vs archived; column sort; pagination
- Stage history (add, edit, remove entries)
- Archive and restore
- Detail view from the job title
- Create and edit: job title, company, platform, posting URL, contract type, seniority, salary, applied date, stage, status, resume
- Linked resume; appointments scoped to that application
- Extra columns and compact rows (Settings)
Directory of employers.
- Name, website, notes
- New company: links applications that already used the same company text but were not linked yet
- Rename company: updates the company text on applications already linked to that record
Job boards and career sites you record applications against.
- Dedicated page: create, edit, and delete platforms
- Each row: name, optional icon, base URL and "applications" URL (open from the table), manual resume flag for boards where you fill a CV on their site
- Built-in templates pre-fill name, icon, and URLs when you add or edit a platform
- Applications pick a platform; the applications list can filter by platform
Full-month schedule.
- Month grid and agenda views
- Event types: interview, assessment, project, meeting, other
- Optional meeting URL and optional link to an application
Resumes and text you reuse on forms.
- CV upload, rename, archive, delete, download
- Presets: full name, email, phone, LinkedIn, GitHub, portfolio
- Customizable key/value rows
Global display and layout.
- 12h or 24h, timezone, locale
- Dashboard: show or hide each widget; week strip starts expanded or collapsed
- Applications table: optional resume, salary, seniority, and created-at columns; compact row density
You can run the application via Docker or locally.
Note:
Running migrations is required on first setup. Also run after pulling updates that include new migrations.
Prerequisites:
- Setup up
backend/.env(seebackend/.env.example) - Setup up
frontend/.env(seefrontend/.env.example)
git clone https://github.com/leobrqz/JobAppliesTracker.git
cd JobAppliesTrackerStart the services:
docker compose up --build -dRun migrations:
docker exec jobappliestracker-backend alembic upgrade headPrerequisites: Node 20+, pnpm, Python 3.11+, PostgreSQL
Start PostgreSQL and create database jobtracker
Prerequisites: Set up Python virtual environment.
cd backend
pip install -r requirements.txtRun migrations:
alembic upgrade headRun the backend:
uvicorn app.main:app --reloadcd frontend
pnpm install
pnpm dev