How lissjackb/swat-hackrack works
Hackro is a dining-hall plate recommender and meal tracker for Tri-Co students. A student supplies profile goals and restrictions, gets macro targets, and can request a meal-specific plate built from the day's menu; they can log what they ate and review daily or weekly progress. Menu scraping and USDA enrichment supply nutrition data, while Claude explains recommendations and WHOOP can optionally adjust targets using recovery and strain. Routes own the visible orchestration; some connections for unsampled handlers are based on the README or SOURCE INDEX, not inspected implementation.
Main entry points: db.ts Database client · page.tsx App screen · recommend/route.ts Recommendation API · progress/route.ts Progress API
Components 26
Student experience
- App screen
src/app/(ui)/page.tsx - Targets API
src/app/api/targets/route.ts - Menu API
src/app/api/menu/route.ts - Recommendation API
src/app/api/recommend/route.ts
Nutrition planning
- Macro targets
src/lib/targets.ts - Plate optimizer
src/lib/recommend.ts - Plate explanation
src/lib/claude.ts - Shared data types
src/lib/types.ts
Menu and nutrition data
- Menu scraper
scripts/scrape.ts - Nutrition enrichment API
src/app/api/nutrition/route.ts - Database client
src/lib/db.ts - SQLite data
prisma/schema.prisma - Menu snapshot
data/menu-snapshot.json
Meal tracking
- Meal log API
src/app/api/log/route.ts - Progress API
src/app/api/progress/route.ts - Progress calculations
src/lib/progress.ts
External integrations
- USDA lookup
src/lib/usda.ts - WHOOP API
src/app/api/whoop/route.ts - WHOOP OAuth and fetch
src/lib/whoop.ts - WHOOP connect and callback
src/app/api/whoop/connect/route.ts - WHOOP callback
src/app/api/whoop/callback/route.ts - Swarthmore menu feed
- USDA FoodData Central
- Anthropic Claude
- WHOOP service
Other components
- Student
Connections 31
- Student → App screen: uses
README.md - App screen → Targets API: requests targets
- App screen → Menu API: requests menu
- App screen → Recommendation API: requests plate
- App screen → Meal log API: logs meal
- App screen → Progress API: views progress
- Targets API → Macro targets: computes targets
README.md - Recommendation API → Plate optimizer: optimizes plate
src/app/api/recommend/route.ts - Recommendation API → Plate explanation: requests explanation
src/app/api/recommend/route.ts - Plate explanation → Anthropic Claude: generates note
- Recommendation API → Database client: loads menu
src/app/api/recommend/route.ts - Menu API → Database client: reads menu
src/app/api/menu/route.ts - Menu scraper → Swarthmore menu feed: fetches menu
README.md - Menu scraper → Menu snapshot: falls back
README.md - Menu scraper → Database client: stores menu
scripts/scrape.ts - Nutrition enrichment API → Database client: reads and updates
src/app/api/nutrition/route.ts - Nutrition enrichment API → USDA lookup: looks up nutrition
src/app/api/nutrition/route.ts - USDA lookup → USDA FoodData Central: queries
- WHOOP API → WHOOP OAuth and fetch: fetches live data
src/app/api/whoop/route.ts - WHOOP API → Database client: reads and caches
src/app/api/whoop/route.ts - WHOOP OAuth and fetch → WHOOP service: requests data
src/lib/whoop.ts - WHOOP connect and callback → WHOOP OAuth and fetch: starts consent
src/app/api/whoop/connect/route.ts - WHOOP callback → WHOOP OAuth and fetch: exchanges code
src/app/api/whoop/callback/route.ts - Progress API → Database client: loads history
src/app/api/progress/route.ts - Progress API → Macro targets: computes targets
src/app/api/progress/route.ts - Progress API → Progress calculations: calculates progress
src/app/api/progress/route.ts - Meal log API → Database client: stores and reads logs
src/app/api/log/route.ts - Macro targets → Shared data types: uses types
src/lib/targets.ts - Plate optimizer → Shared data types: uses types
src/lib/recommend.ts - Database client → SQLite data: accesses
- Targets API → WHOOP API: uses recovery