Course course planning for Texas A&M CSCE students. Sift combines grade distributions, professor ratings, prerequisite chains, and transcript data to generate personalized course recommendations.
| Layer | Technology |
|---|---|
| Frontend | Next.js 16 (App Router), TypeScript, Tailwind CSS v4, shadcn/ui, TanStack Query |
| Backend | Express.js (TypeScript) |
| Database | Supabase (PostgreSQL) |
| Data Sources | Anex grade distributions, RateMyProfessors |
| Transcript Parsing | pdf-parse + Claude API |
- Node.js 20+
- A Supabase project
- An Anthropic API key (for transcript parsing)
npm install
cd client && npm install
cd ../server && npm installclient/.env.local
NEXT_PUBLIC_API_URL=http://localhost:3001
server/.env
PORT=3001
FRONTEND_URL=http://localhost:3000
SUPABASE_URL=<your-supabase-url>
SUPABASE_ANON_KEY=<your-supabase-anon-key>
ANTHROPIC_API_KEY=<your-anthropic-api-key>
Run the scraper to pull grade distributions from Anex and professor ratings from RateMyProfessors:
cd server && npm run scrape# From root — starts both client and server
npm run devOr individually:
cd client && npm run dev # http://localhost:3000
cd server && npm run dev # http://localhost:3001sift/
├── client/ # Next.js frontend
├── server/ # Express API server
│ └── scripts/ # Data scraping scripts
└── supabase/ # Database migrations