Skip to content

akashsv01/Terp-Planner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 TerpPlanner

Your MAGE degree — untangled.

19 programs · one twin · an AI that actually reads the sheet

Next.js FastAPI Claude

📚 The story (why this exists)

You're a MAGE student at UMD. You're sharp — but the system isn't one linear checklist. It's degree sheets, choose-N electives, fall-only courses, prereq chains, Testudo, PlanetTerp threads, and a clock ticking toward 30 credits / 10 courses (or GCEN rules) before the 5-year policy window shows up in the rearview mirror.

Sound familiar? You've probably felt one (or all) of these:

The pain What it feels like
😪 Spreadsheet fatigue "Which bucket is this course even in?"
🎯 Prereq roulette "If I want that class in Spring, what do I need first?"
📆 Offering anxiety "Is this actually offered when I need it?"
💬 Advisor time crunch Office hours are gold — you want answers now, not after three PDFs.
:scales: Plan paralysis Balanced vs. accelerated pacing — what does that mean for your transcript?

TerpPlanner is the hackathon answer: turn scattered MAGE reality into a living dashboard, a prerequisite constellation, a drag-and-drop planner, and a Claude-powered agent that calls the same tools as the UI — so demos feel real, not scripted.

🎯 North star: We don't replace advisors or Testudo — we compress confusion so you walk in prepared.

🏆 What judges should try (60-second demo path)

  1. 🏠 Home → Build Academic Twin — transcript + program; watch progress light up.
  2. 📊 Overview → Degree sheet — bucket progress without squinting at PDFs.
  3. 🗺️ Prereq map — pick a goal course; the graph shows why order matters.
  4. 📋 Planner — drag courses into terms; watch the degree structure check react.
  5. 🤖 Agent — ask for a credit-safe next semester with bold terms + electives; watch tool traces + structured answers.

✨ Feature matrix

Feature What you get
👥 Academic Twin Browser-stored profile: program + transcript powers everything.
⚔️ Plan Battle Pick pacing; jump into the planner with intent.
📝 Degree sheet view Clean bucket labels; progress you can screenshot.
🧭 Prerequisite map D3 force graph: goal vs. transcript vs. still-needed.
📆 Degree planner Drag/drop terms, offering hints, conflict sniffing.
⚖️ Course compare Side-by-side; PlanetTerp-flavored "which elective?" energy.
🔬 Professors & grades Distributions + radar demo — the vibe-check layer.
🧠 AI Agent (Claude) Function-calling advisor — no API key in the browser.

Data: curated MAGE JSON for 19 programs in backend/data/scraped/. Live bits via umd.io + PlanetTerp (where configured).


🏗️ Architecture at a glance

   Next.js 14 (Vercel-ready)
              |
              |  /api/backend/*  (server proxy — secrets stay server-side)
              v
        FastAPI + Claude tool loop
              |
              +-- Redis (optional)
              +-- httpx -> umd.io / PlanetTerp
              +-- MAGE degree JSON + PDFs

🛠️ Tech stack

Layer Stack
Frontend Next.js 14 App Router, React 18, TypeScript, Tailwind, Framer Motion, D3, Recharts, react-markdown
Backend FastAPI, Uvicorn, Anthropic SDK, httpx, pydantic, Redis (optional)

👣 Quick start (local)

1. Clone

git clone https://github.com/akashsv01/Terp-Planner.git
cd Terp-Planner

2. Backend

cd backend
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env   # add ANTHROPIC_API_KEY (+ optional keys)
python serve.py

Health check: GET http://127.0.0.1:8000/health (port may differ — check your .env).

3. Frontend

cd ../frontend
npm install
cp .env.example .env.local

Point at your API:

BACKEND_URL=http://127.0.0.1:9080
npm run dev

Open http://localhost:3000


🔑 Environment variables (reference)

backend/.env

Variable Purpose
ANTHROPIC_API_KEY Claude — required for agent.
ANTHROPIC_MODEL / ANTHROPIC_FALLBACK_MODEL Optional model overrides.
ELEVENLABS_API_KEY Optional.
UMD_IO_BASE / PLANETTERP_BASE API bases.
REDIS_URL Optional cache.
HOST / PORT Bind address.
CORS_ORIGINS Production: comma-separated browser origins (your hosted frontend URL(s)).

frontend/.env.local

Variable Purpose
BACKEND_URL Proxy target for /api/backend/*.

Never commit real .env files — only .env.example belongs in git.


⚙️ Scripts

Where Command
frontend npm run dev / npm run build / npm run start / npm run lint
backend python serve.py

🌱 Regenerating scraped data (optional)

See scripts/scrape_degree_sheets.py and backend/data/scraped/. Not required for a normal run — JSON ships with the repo.


🔍 Troubleshooting

  • Agent / model errors: use current Claude IDs from backend/.env.example.
  • CORS: API must list your exact frontend origin (scheme + host, no path).
  • Windows bind errors: try another PORT or use serve.py.
  • 502 / fetch failed: wrong BACKEND_URL or API asleep (free tier).

💐 Acknowledgments

  • UMD MAGE programs and public catalogs
  • umd.io / PlanetTerp
  • Anthropic Claude for the agent experience

Built for demos that need wow — and students who need clarity.

Always confirm registration and degree rules with official UMD advisors and Testudo.

About

Terp Planner

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors