How lissjackb/swat-hackro works
Hackro is a dining-hall meal planning and nutrition tracking app for Tri-Co students. A student enters profile, goal, and dietary constraints; the app combines dining-menu data with macro targets and optional Whoop recovery data to plan meals, then supports recording food eaten and reviewing progress. The shared planner serves both the UI and API, while routes handle persistence and integrations. Edges reflect README statements and supplied excerpts/index references; unsampled route and screen internals are not inferred.
Main entry points: plan.ts Planner engine · store.tsx Client state · db.ts SQLite database · route.ts Nutrition lookup
Components 34
Student experience
- Hackro app
src/app/page.tsx - Profile setup
src/components/hackro/screens/Onboarding.tsx - Meal screens
src/components/hackro/screens/Today.tsx - Tracking screens
src/components/hackro/screens/Track.tsx - UI primitives
src/components/hackro/ui.tsx - Icon system
src/components/hackro/Icon.tsx - Style adapter
src/lib/hackro/sx.ts - AI explanations
src/components/hackro/AiBits.tsx - Client state
src/lib/hackro/store.tsx - State model
src/lib/hackro/state.ts - Client API
src/lib/hackro/api.ts
Meal planning
- Planner engine
src/lib/planner/plan.ts - Planning context
src/lib/planner/context.ts - Menu and meal data
src/lib/planner/data.ts - Menu item mapping
src/lib/planner/items.ts - Dietary restrictions
src/lib/planner/restrictions.ts - Planner targets
src/lib/planner/targets.ts - Macro calculations
src/lib/targets.ts - Progress calculations
src/lib/progress.ts
Application services
- Menu service
src/app/api/menu/route.ts - Plan service
src/app/api/plan/route.ts - Profile service
src/app/api/profile/route.ts - Target service
src/app/api/targets/route.ts - Nutrition lookup
src/app/api/nutrition/route.ts - Food logging
src/app/api/log/route.ts - Progress service
src/app/api/progress/route.ts - AI text service
src/app/api/ai/route.ts - Whoop service
src/app/api/whoop/route.ts - Whoop OAuth
src/lib/whoop.ts - Claude client
src/lib/claude.ts
Data and integrations
- Menu access
src/lib/menu.ts - USDA lookup
src/lib/usda.ts - SQLite database
src/lib/db.ts
Other components
- Student
Connections 42
- Student → Hackro app: uses
README.md - Hackro app → Client state: mounts
src/app/page.tsx - Hackro app → Profile setup: renders
src/app/page.tsx - Hackro app → Meal screens: renders
src/app/page.tsx - Meal screens → Client state: reads state
src/components/hackro/screens/Today.tsx - Tracking screens → Client state: reads state
src/components/hackro/screens/Track.tsx - Profile setup → Client state: updates state
src/components/hackro/screens/Onboarding.tsx - AI explanations → Client state: reads state
src/components/hackro/AiBits.tsx - AI explanations → AI text service: requests text
src/components/hackro/AiBits.tsx - Meal screens → UI primitives: renders
src/components/hackro/screens/Today.tsx - UI primitives → Icon system: renders
src/components/hackro/ui.tsx - UI primitives → Style adapter: uses styles
src/components/hackro/ui.tsx - Icon system → Style adapter: uses styles
src/components/hackro/Icon.tsx - Client state → State model: uses model
src/lib/hackro/store.tsx - Client state → Client API: loads menu
src/lib/hackro/store.tsx - Client state → Planner engine: runs planner
src/lib/hackro/store.tsx - Client API → Planner engine: uses planner
src/lib/hackro/api.ts - Client API → State model: uses model
src/lib/hackro/api.ts - Planner engine → Planning context: normalizes context
src/lib/planner/index.ts - Planner engine → Menu and meal data: uses menu data
src/lib/planner/index.ts - Planner engine → Menu item mapping: maps items
src/lib/planner/index.ts - Planner engine → Dietary restrictions: applies rules
src/lib/planner/index.ts - Planner engine → Planner targets: calculates targets
src/lib/planner/index.ts - Menu service → SQLite database: reads menu
src/app/api/menu/route.ts - Menu service → Menu access: uses menu access
src/app/api/menu/route.ts - Plan service → SQLite database: reads data
src/app/api/plan/route.ts - Plan service → Planner engine: builds plan
src/app/api/plan/route.ts - Profile service → SQLite database: reads and writes
src/app/api/profile/route.ts - Target service → Macro calculations: calculates targets
src/app/api/targets/route.ts - Nutrition lookup → SQLite database: reads items
src/app/api/nutrition/route.ts - Nutrition lookup → USDA lookup: looks up nutrition
src/app/api/nutrition/route.ts - Nutrition lookup → Menu access: uses menu access
src/app/api/nutrition/route.ts - Nutrition lookup → Menu and meal data: uses planner data
src/app/api/nutrition/route.ts - Food logging → SQLite database: reads and writes
src/app/api/log/route.ts - Food logging → Progress calculations: calculates progress
src/app/api/log/route.ts - Progress service → SQLite database: reads data
src/app/api/progress/route.ts - Progress service → Macro calculations: calculates targets
src/app/api/progress/route.ts - Progress service → Progress calculations: calculates progress
src/app/api/progress/route.ts - AI text service → Claude client: generates text
src/app/api/ai/route.ts - Whoop service → Whoop OAuth: fetches recovery
src/app/api/whoop/route.ts - Whoop service → SQLite database: reads profile
src/app/api/whoop/route.ts - Whoop OAuth → SQLite database: stores tokens
src/lib/whoop.ts