How hoagieclub/plan works
HoagiePlan is a Princeton academic planner: students search courses, organize them in a dashboard and semester bins, track program progress, and build calendars. The frontend sends backend requests through a Next.js proxy; the sampled search endpoint queries course records and serializes results. The tree documents additional calendar, profile, and program-guidance areas. Backend endpoint wiring beyond the sampled search code is not verified here; README describes CAS, while the sampled frontend proxy obtains an Auth0 access token.
Main entry points: route.ts API proxy · models.py Course records · ReviewMenu.tsx Course reviews · page.tsx Planning dashboard
Components 21
Student experience
- Planning dashboard
frontend/app/dashboard/page.tsx - Dashboard canvas
frontend/app/dashboard/Canvas.tsx - Calendar planner
frontend/app/calendar/Calendar.tsx - Course search
frontend/app/calendar/CalendarSearch.tsx - Near completion
frontend/components/AlmostCompletedMinorsModal/AlmostCompletedMinorsModal.tsx - Course reviews
frontend/components/ReviewMenu.tsx
Request and identity
- API proxy
frontend/app/api/hoagie/[...path]/route.ts - Auth0 client
frontend/lib/auth0.ts - Django API
backend/config/urls.py
Academic planning
- Course search API
backend/hoagieplan/api/dashboard/search.py - Calendar API
backend/hoagieplan/api/calendar - Program guidance API
backend/hoagieplan/api/dashboard - Profile API
backend/hoagieplan/api/profile - Calendar operations
frontend/services/calendarService.ts - Progress lookup
frontend/services/almostCompletedService.ts - Program details
frontend/services/programDetailsService.ts
Course data
- Course records
backend/hoagieplan/models.py - Academic database
- Course data preparation
backend/data
Other components
- Student
- Reviews service
Connections 16
- Student → Planning dashboard: plans courses
- Student → Calendar planner: plans schedule
- Planning dashboard → Dashboard canvas: renders bins
- Course search → API proxy: requests courses
- Calendar operations → API proxy: requests calendar
- Progress lookup → API proxy: requests progress
- Program details → API proxy: requests details
- Course reviews → API proxy: requests reviews
- API proxy → Auth0 client: gets token
- API proxy → Django API: forwards requests
- Django API → Course search API: dispatches search
- Course search API → Course records: queries courses
- Course records → Academic database: reads records
- Calendar API → Course records: uses course data
- Course data preparation → Academic database: prepares records
- Course reviews → Reviews service: fetches reviews