How unb-mds/2026-2-bandejao-unb works
Bandejão is a university-restaurant PWA for browsing campus menus, submitting meal reviews, and checking community-based queue information. Its main visitor workflow selects a campus, retrieves a menu through the frontend API client, and presents it with diet/allergen filters; authenticated users can also register or log in and use review/check-in features. The README documents automated PDF ingestion, queue forecasting, history, and GPS check-in, but those implementations are not present in the supplied tree. The graph shows documented capabilities without asserting unseen call paths; the sampled backend currently exposes simulated account endpoints and a status route.
Main entry points: index.js Screen routing · apiClient.js API client · models.py Application database · CardapioView.vue Menu screen
Components 26
PWA experience
- Vue app shell
frontend/src/App.vue - Screen routing
frontend/src/router/index.js - API client
frontend/src/services/apiClient.js - Auth state
frontend/src/stores/auth.js - PWA setup
frontend/src/pwa.js - Account screens
frontend/src/views/CadastroView.vue
Menu discovery
- Campus selection
frontend/src/views/CampusView.vue - Menu preferences
frontend/src/stores/preferencias.js - Menu screen
frontend/src/views/CardapioView.vue - Diet and marker filters
frontend/src/components/FiltroCardapio.vue - Menu selection and filtering
frontend/src/utils/cardapio.js - Menu data state
frontend/src/stores/cardapio.js - PDF menu ingestion
backend/apps/cardapio
Community features
- Review screens
frontend/src/views/AvaliacoesView.vue - Review widget
frontend/src/components/AvaliacaoWidget.vue - Review state
frontend/src/stores/avaliacoes.js - Review API
backend/apps/avaliacoes/views.py - Queue forecast and check-in
frontend/src/views/FilaView.vue - Queue status API
backend/apps/status/views.py
Django API
- Campus and day models
backend/apps/core/models.py - Menu API
backend/apps/cardapio/views.py - Account endpoints
backend/apps/usuarios/views.py - API URL routing
backend/config/urls.py - Application database
backend/apps/core/models.py
Other components
- Visitor
- Signed-in user
Connections 31
- Visitor → Screen routing: opens screens
frontend/src/router/index.js - Signed-in user → Screen routing: opens screens
frontend/src/router/index.js - Vue app shell → Screen routing: renders routes
frontend/src/App.vue - Campus selection → Menu preferences: remembers campus
- Screen routing → Campus selection: routes to
frontend/src/router/index.js - Screen routing → Menu screen: routes to
frontend/src/router/index.js - Menu screen → Menu data state: loads menu
- Menu data state → API client: requests data
- API client → API URL routing: HTTP requests
- API URL routing → Account endpoints: routes account
backend/config/urls.py - API URL routing → Queue status API: includes status
backend/config/urls.py - API URL routing → Menu API: menu endpoint
- Menu API → Application database: reads menu
- Campus and day models → Application database: defines entities
backend/apps/core/models.py - Diet and marker filters → Menu preferences: applies filters
frontend/src/components/FiltroCardapio.vue - Menu screen → Diet and marker filters: shows filters
- Menu screen → Menu selection and filtering: formats menu
- Menu API → PDF menu ingestion: reads imported menu
- Screen routing → Review screens: routes to
frontend/src/router/index.js - Review screens → Review state: loads reviews
- Review widget → Review state: submits review
- Review state → API client: requests data
- Review API → Application database: stores reviews
- Screen routing → Queue forecast and check-in: routes to
frontend/src/router/index.js - Queue forecast and check-in → API client: requests status
- Queue status API → Application database: uses check-ins
- Screen routing → Account screens: routes to
frontend/src/router/index.js - Account screens → API client: requests account
- API client → Auth state: sets session token
- Account endpoints → Application database: manages accounts
- Vue app shell → PWA setup: registers worker
frontend/src/main.js