How croustillant-developpement/croustillantweb works
CROUStillant is a multilingual web app for discovering CROUS restaurants and their menus. The central visitor workflow is restaurant discovery and filtering, followed by restaurant details and date-based menu browsing; the API supplies the restaurant, menu, dish, and statistics data. The graph also preserves documented capabilities for embeds, TV screen mode, favorites, calendar feeds, mobile-app information, and analytics. Several feature implementations are represented by their exact enclosing paths because their source was not sampled; uncertain call wiring is omitted.
Main entry points: api-request.ts API client · restaurant-service.ts Restaurant queries · stats-services.ts Dish and stats queries · useRestaurantFilters.ts Restaurant filters
Components 23
Web experience
- Localized pages
src/app/[locale] - Locale routing
src/i18n/routing.ts - Dish catalogue
src/app/[locale]/dishes/page.tsx - Statistics page
src/app/[locale]/stats/page.tsx
Restaurant discovery
- Restaurant list
src/app/[locale]/restaurants/(list)/page.tsx - Restaurant filters
src/hooks/useRestaurantFilters.ts - Filter and sort
src/lib/filters.ts - Restaurant detail
src/app/[locale]/restaurants/[slug]/page.tsx - Menu navigation
src/hooks/useRestaurantMenu.ts - Favorites and preferences
src/store/userPreferencesStore.ts
Data services
- Restaurant queries
src/services/restaurant-service.ts - Menu queries
src/services/menu-service.ts - Dish and stats queries
src/services/stats-services.ts - API client
src/services/api-request.ts
Sharing and insights
- Widget builder
src/components/iframe-builder - Widget configuration
src/store/iframeBuilderStore.ts - TV screen mode
src/app/[locale]/restaurants/[slug]/screen/page.tsx - Calendar subscriptions
src/lib/calendar.ts - Mobile app information
src/components/mobile - Umami analytics
src/services/umami-service.ts
Other components
- Visitor
- CROUStillant API
- Umami service
Connections 25
- Visitor → Localized pages: opens
- Localized pages → Locale routing: routes by locale
- Visitor → Restaurant list: browses
- Restaurant list → Restaurant queries: loads restaurants
- Restaurant filters → Filter and sort: filters and sorts
- Restaurant filters → Favorites and preferences: reads preferences
- Visitor → Restaurant detail: opens restaurant
- Restaurant detail → Restaurant queries: loads details
- Menu navigation → Menu queries: loads menus and dates
- Restaurant queries → API client: requests data
- Menu queries → API client: requests data
- Dish and stats queries → API client: requests dishes and stats
- API client → CROUStillant API: fetches
- Visitor → Dish catalogue: browses dishes
- Dish catalogue → Dish and stats queries: loads dish data
- Visitor → Statistics page: views statistics
- Statistics page → Dish and stats queries: loads statistics
- Visitor → Widget builder: configures widget
- Widget builder → Widget configuration: updates configuration
- Visitor → TV screen mode: views signage
- Visitor → Calendar subscriptions: subscribes to menus
- Calendar subscriptions → CROUStillant API: serves calendar data
- Visitor → Mobile app information: finds app links
- Umami analytics → API client: requests analytics
- API client → Umami service: fetches