A full-stack web application for tracking job applications, deadlines, contacts, and companies to watch. Built as a monorepo with a React frontend, Express API backend, and Supabase PostgreSQL database.
| Layer | Technology | Host |
|---|---|---|
| Frontend | React + Vite + Tailwind CSS v4 | Cloudflare Pages |
| Backend | Express.js + TypeScript | Railway |
| Database | Supabase (PostgreSQL + Auth + RLS) | Supabase |
internship-tracker/
├── api/ # Express.js REST API
├── web/ # React + Vite frontend
├── shared/ # Shared TypeScript types
├── docs/ # Deployment plan and documentation
├── nixpacks.toml # Railway build configuration
└── *.sql # Database migration and seed files
- Node.js 20+
- npm 9+
- A Supabase project (for database and auth)
# Clone the repo
git clone https://github.com/teial-personal-projects/internship-tracker.git
cd internship-tracker
# Install all workspace dependencies
npm installSUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=eyJ...
SUPABASE_SERVICE_ROLE_KEY=eyJ...
NODE_ENV=development
ALLOWED_ORIGINS=http://localhost:5174VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=eyJ...
VITE_API_URL=http://localhost:8080/api# Build shared types first
npm run build -w shared
# Start the API (terminal 1)
npm run dev -w api
# Start the frontend (terminal 2)
npm run dev -w webThe frontend runs at http://localhost:5174 and proxies /api requests to http://localhost:8080.
Run the following SQL files in order via the Supabase SQL Editor:
supabase-migration.sql— core tables, triggers, indexes, RLS policiesjob-boards.sql— job_boards table and seed data
See docs/Deployment_Plan.md for full step-by-step instructions.
- Backend deploys to Railway from the
mainbranch - Frontend deploys to Cloudflare Pages from the
mainbranch - Railway uses
nixpacks.tomlto build only thesharedandapiworkspaces
- Email/password authentication via Supabase Auth (email confirmation required)
- Add, edit, delete applications
- Track status, deadlines, pay, location, cover letter links, and more
- Smart alerts for upcoming deadlines and stale applications
- Quick filters: Active, Not Started, Applied, Due Soon, Stale, Archived, Conference, All
- Date range filtering for application timelines
- Paginated results (15 per page)
- Sortable, draggable column headers
- Responsive design — table on desktop, card view on mobile
- Job Boards page with curated links to application search sites
- User profile with major, preferred positions, and preferred locations