WVU-themed interview prep and job application tracker built with Next.js + Supabase.
pnpm install
pnpm devApp runs at http://localhost:3000 by default (or next available port).
This project includes local migrations under supabase/migrations for:
profilessessionsjob_applications
- Docker Desktop
- Supabase CLI
supabase startsupabase status -o envCopy those values into .env.local:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEY
Set:
NEXT_PUBLIC_APP_URLto your current app URL (example:http://localhost:3001)ADMIN_EMAILSto your admin email list
If the DB is fresh, migrations are applied on supabase start.
If needed, run:
supabase db resetSupabase local includes an email catcher UI.
After supabase start, run:
supabase statusOpen the Inbucket URL shown there, then click the magic link email.
Use:
http://localhost:3000/auth/callback- or your active port, e.g.
http://localhost:3001/auth/callback
The login form now uses the browser origin automatically, so it works on non-3000 ports.
Add these variables to .env.local:
AIRTABLE_PATAIRTABLE_BASE_IDAIRTABLE_TABLE_NAME(default:JobPostings)JOB_SOURCE_URLS(newline or comma-separated source URLs, prefer Lever/Ashby role pages)
If Airtable is not configured, the app automatically stores scraped postings in local
Supabase table external_job_postings.
Create an Airtable table with fields:
Title(single line text)Company(single line text)Location(single line text)URL(url)Source(url or text)Snippet(long text)PostedAt(date/time)ExternalId(single line text)LastSeenAt(date/time)
Run sync from:
POST /api/jobs/sync(admin-only)- Or use the Admin Jobs page button at
/admin/jobs.
Tracked users can view synced postings at:
/jobs/portal