Track your job applications and land your first tech job in 2026! Real auth with Supabase — sign in from any device and your data follows you.
- Go to supabase.com and create a free account
- Click New Project, give it a name, set a database password, pick a region
- Wait for it to finish provisioning (~1 min)
- In your Supabase dashboard, go to SQL Editor (left sidebar)
- Click New Query
- Paste the entire contents of
supabase-schema.sqlinto the editor - Click Run — you should see "Success. No rows returned"
- Go to Settings → API in your Supabase dashboard
- Copy the Project URL and anon public key
cp .env.local.example .env.localEdit .env.local and paste your values:
NEXT_PUBLIC_SUPABASE_URL=https://xxxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOi...
npm install
npm run dev- Go to Google Cloud Console
- Create a project (or use an existing one)
- Go to APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID
- Set Authorized redirect URIs to:
(Find your project ref in Supabase → Settings → General)
https://YOUR-PROJECT-REF.supabase.co/auth/v1/callback - Copy the Client ID and Client Secret
- In Supabase dashboard, go to Authentication → Providers → Google
- Enable it and paste your Client ID and Client Secret
- Save
Google Sign-In will now work alongside email/password.
src/
├── app/
│ ├── auth/callback/
│ │ └── route.ts # OAuth redirect handler
│ ├── globals.css # Theme variables & all styles
│ ├── layout.tsx # Root layout with metadata
│ └── page.tsx # Main page (auth flow + dashboard)
├── components/
│ ├── AddJobForm.tsx # New application form
│ ├── AuthPage.tsx # Sign in / Sign up / Google OAuth
│ ├── Header.tsx # Top nav bar with sign out
│ ├── JobRow.tsx # Expandable job row with status controls
│ ├── Motivation.tsx # Dynamic encouragement banner
│ ├── ProfileSetup.tsx # First-time name & goal setup
│ └── StatCard.tsx # Stat counter card
├── hooks/
│ ├── useAuth.ts # Supabase auth state & methods
│ └── useJobTracker.ts # Jobs + profile CRUD via Supabase
├── lib/
│ ├── constants.ts # Status config, work types, style maps
│ ├── supabase-browser.ts # Browser Supabase client
│ └── supabase-server.ts # Server Supabase client
├── middleware.ts # Session refresh middleware
└── types/
└── index.ts # TypeScript interfaces
supabase-schema.sql # Database tables + RLS policies
.env.local.example # Env vars template
- Real authentication — Email/Password + Google OAuth via Supabase
- Cloud database — Postgres with Row Level Security (your data is private)
- Cross-device sync — sign in anywhere, data is always there
- Add applications — company, position, remote/on-site/hybrid, location
- Status management — pending → accepted / rejected (click any row)
- Live counters — total, pending, accepted, rejected
- Filter & search — by status, work type, or free text search