Skip to content

๐ŸŽฏ A modern, full-stack job application tracking system built with Next.js 16 and Supabase. Keep track of your job search journey with an intuitive interface, real-time updates, and powerful filtering capabilities.

Notifications You must be signed in to change notification settings

berkinduz/job-apply-tracker

Repository files navigation

๐ŸŽฏ JobTrack โ€” Job Application Tracker

A modern, full-stack job application tracking system built with Next.js 16 and Supabase. Track every application with a clean dashboard, a drag-and-drop kanban, and resume attachments so you always know whatโ€™s next.

๐ŸŒ Live Demo: jobapplytracker.com

Next.js React TypeScript Supabase Tailwind CSS

๐Ÿ‘€ Product Preview

JobTrack dashboard preview

Dark mode assets are included (public/hero_preview_dark.png, public/kanban_dark.webm, public/apply_detail_dark.webm).

โœจ Features

๐Ÿ” Authentication

  • Email/Password Authentication - Secure sign up and sign in
  • Password Reset - Email-based recovery flow
  • OAuth Integration - Google and GitHub social login
  • Protected Routes - Middleware-based route protection
  • Row Level Security - Each user can only access their own data

๐Ÿ“‹ Application Management

  • CRUD Operations - Create, read, update, and delete applications
  • Status Tracking - Track applications through 8 different stages:
    • Applied โ†’ Test Case โ†’ HR Interview โ†’ Technical Interview โ†’ Management Interview โ†’ Offer โ†’ Accepted/Rejected
  • Kanban Board - Drag and drop applications across stages
  • Pin Important Applications - Keep critical applications at the top
  • Resume Attachments (PDF) - Upload the exact CV you sent for each application
  • Contact Management - Store recruiter and interviewer contact information
  • Notes & Cover Letters - Keep detailed notes for each application

๐Ÿ” Search & Filter

  • Real-time Search - Instant search across company names and positions
  • Multi-filter Support - Filter by status, work type, source, and more
  • Sort Options - Sort by date, company name, or status
  • URL State Management - Filters persist in URL for easy sharing

๐ŸŒ Internationalization

  • Multi-language Support - English and Turkish translations
  • Dynamic Language Switching - Change language without page reload

๐ŸŽจ UI/UX

  • Dark/Light Mode - System-aware theme with manual toggle
  • Responsive Design - Works seamlessly on desktop, tablet, and mobile
  • Modern UI Components - Built with shadcn/ui and Radix primitives
  • Toast Notifications - Real-time feedback for user actions
  • SEO-first Landing - Marketing homepage at /

๐Ÿ› ๏ธ Tech Stack

Frontend

Technology Purpose
Next.js 16 React framework with App Router
React 19 UI library with latest features
TypeScript Type-safe development
Tailwind CSS 4 Utility-first styling
shadcn/ui Accessible component library
Radix UI Headless UI primitives
Zustand Lightweight state management
React Hook Form Performant form handling
Zod Schema validation

Backend & Database

Technology Purpose
Supabase Backend as a Service
PostgreSQL Relational database
Row Level Security Data isolation per user
Supabase Auth Authentication system

Other Libraries

Library Purpose
next-intl Internationalization
next-themes Theme management
date-fns Date formatting
nuqs URL query state
Lucide React Icon library
Sonner Toast notifications

๐Ÿš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn
  • Supabase account

Installation

  1. Clone the repository

    git clone https://github.com/berkinduz/job-apply-tracker.git
    cd job-apply-tracker
  2. Install dependencies

    npm install
  3. Set up environment variables

    Create a .env.local file in the root directory:

    NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
    NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
    SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
  4. Set up Supabase database

    Run the SQL schema in your Supabase SQL Editor:

    # The schema is available in supabase-schema.sql
  5. Enable resume uploads (optional)

    Run the resume storage script in Supabase SQL Editor:

    # The script is available in supabase-resume.sql
  6. Run the development server

    npm run dev
  7. Open your browser

๐Ÿ“ Project Structure

src/
โ”œโ”€โ”€ app/                    # Next.js App Router pages
โ”‚   โ”œโ”€โ”€ applications/       # Application CRUD pages
โ”‚   โ”œโ”€โ”€ auth/              # Auth callback handler
โ”‚   โ”œโ”€โ”€ login/             # Authentication page
โ”‚   โ””โ”€โ”€ settings/          # User settings
โ”œโ”€โ”€ components/
โ”‚   โ”œโ”€โ”€ applications/      # Application-related components
โ”‚   โ”œโ”€โ”€ layout/            # Header, navigation, theme toggle
โ”‚   โ”œโ”€โ”€ providers/         # Context providers
โ”‚   โ””โ”€โ”€ ui/                # shadcn/ui components
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ supabase/          # Supabase client & services
โ”‚   โ””โ”€โ”€ utils.ts           # Utility functions
โ”œโ”€โ”€ messages/              # i18n translation files
โ”œโ”€โ”€ store/                 # Zustand state management
โ””โ”€โ”€ types/                 # TypeScript type definitions

๐Ÿ—„๏ธ Database Schema

-- Applications table
CREATE TABLE applications (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID REFERENCES auth.users(id),
  company_name TEXT NOT NULL,
  position TEXT NOT NULL,
  status TEXT NOT NULL,
  work_type TEXT NOT NULL,
  -- ... more fields
  created_at TIMESTAMPTZ DEFAULT NOW(),
  updated_at TIMESTAMPTZ DEFAULT NOW()
);

-- Row Level Security
ALTER TABLE applications ENABLE ROW LEVEL SECURITY;

CREATE POLICY "Users can only see their own applications"
  ON applications FOR SELECT
  USING (auth.uid() = user_id);

๐ŸŽฏ Why I Built This

As a developer actively searching for new opportunities, I found myself struggling to keep track of all my job applications across different platforms. Spreadsheets felt limiting, and existing tools didn't quite fit my workflow.

This project solves a real problem I faced while also serving as a demonstration of my full-stack development capabilities:

  • Modern React Patterns - Server components, streaming, suspense
  • Type Safety - End-to-end TypeScript with Zod validation
  • Authentication - Implementing secure auth flows with multiple providers
  • Database Design - PostgreSQL with proper RLS policies
  • State Management - Combining server state with client-side stores
  • Internationalization - Building for a global audience
  • Responsive Design - Mobile-first approach with Tailwind CSS

๐Ÿ”ฎ Future Enhancements

  • Analytics dashboard with application statistics
  • Email reminders for follow-ups
  • Calendar integration for interview scheduling
  • AI-powered job matching suggestions
  • Export data to CSV/PDF
  • Browser extension for quick adding

๐Ÿ“„ License

This project is open source and available under the MIT License.

๐Ÿ‘ค Author

Berkin Duz


If you found this project helpful, please consider giving it a โญ๏ธ

About

๐ŸŽฏ A modern, full-stack job application tracking system built with Next.js 16 and Supabase. Keep track of your job search journey with an intuitive interface, real-time updates, and powerful filtering capabilities.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published