How unb-mds/2026-2-bandejao works
Bandejão is an UnB RU menu service: published weekly PDFs are discovered and parsed into meals, diet categories, and allergens, then optionally synchronized to an API that imports and stores them. API consumers can query menus with diet and allergen filters; the README also describes campus, evaluation, and check-in capabilities. The sampled menu route confirms database reads and import writes. Evaluation, check-in, campus, and frontend implementation details were not sampled; the frontend source shown is still a starter screen, so it is not mapped as a working client.
Main entry points: app/main.py FastAPI application · cardapio.py Menu routes · sincronizar.py Sync command · extracao/main.py PDF extraction
Components 18
Menu extraction
- Sync command
extracao/extracao/sincronizar.py - PDF extraction
extracao/extracao/main.py
Backend API
- FastAPI application
backend/app/main.py - Menu routes
backend/app/api/routes/cardapio.py - Campus routes
backend/app/api/routes/campus.py - Evaluation routes
backend/app/api/routes/avaliacao.py - Check-in routes
backend/app/api/routes/checkin.py - Health route
backend/app/api/routes/health.py - Database session
backend/app/db/session.py
Menu data
- Menu schemas
backend/app/schemas/cardapio.py - Menu item model
backend/app/models/item_cardapio.py - Menu model
backend/app/models/cardapio.py - Campus model
backend/app/models/campus.py
User feedback
- Evaluation model
backend/app/models/avaliacao.py - Check-in model
backend/app/models/checkin.py
Other components
- RU website and PDFs
- API consumer
- PostgreSQL database
Connections 18
- Sync command → PDF extraction: runs extraction
- Sync command → PDF extraction: sends payload
- PDF extraction → RU website and PDFs: fetches pages and PDFs
- Sync command → FastAPI application: imports via API
- API consumer → FastAPI application: requests API
- FastAPI application → Menu routes: dispatches
- FastAPI application → Campus routes: dispatches
- FastAPI application → Evaluation routes: dispatches
- FastAPI application → Check-in routes: dispatches
- FastAPI application → Health route: dispatches
- Menu routes → Menu schemas: validates and formats
- Menu routes → Database session: obtains session
- Menu routes → Menu model: queries and writes
- Menu routes → Campus model: queries and writes
- Menu routes → Menu item model: creates items
- Menu model → PostgreSQL database: persists menu data
- Menu item model → PostgreSQL database: persists item data
- Campus model → PostgreSQL database: persists campus data