How ibrahimalrahbi/menugateapp works
MenuGate is a restaurant-menu management application: visitors browse public, shareable menus; owners authenticate with Google to manage their menus and items; admins can review and delete menus across owners. The browser UI calls the Spring REST API, whose controllers delegate menu operations to the service layer and repositories backed by Oracle. The README documents the authentication and role model; sampled source confirms menu-service persistence and admin controller delegation, but not the full security or login wiring.
Main entry points: MenuService.java Menu operations · api.js API client · index.html MenuGate browser UI · UserRepository.java User repository
Components 22
Browser experience
- MenuGate browser UI
src/main/resources/static/index.html - Menu and dashboard pages
src/main/resources/static/menu.html - Admin page
src/main/resources/static/admin.html - UI workflows
src/main/resources/static/js/app.js - API client
src/main/resources/static/js/api.js
REST API
- Public and owner menus
src/main/java/com/menugate/app/controller/MenuController.java - Admin menu endpoints
src/main/java/com/menugate/app/controller/AdminMenuController.java - Session info endpoint
src/main/java/com/menugate/app/controller/AuthController.java - OAuth and access rules
src/main/java/com/menugate/app/config/SecurityConfig.java - API error mapping
src/main/java/com/menugate/app/exception/GlobalExceptionHandler.java
Menu domain
- Menu operations
src/main/java/com/menugate/app/service/MenuService.java - User provisioning
src/main/java/com/menugate/app/service/UserService.java - API data contracts
src/main/java/com/menugate/app/dto/MenuResponse.java
Persistence and identity
- User, menu, and item
src/main/java/com/menugate/app/model/Menu.java - Menu repository
src/main/java/com/menugate/app/repository/MenuRepository.java - Menu-item repository
src/main/java/com/menugate/app/repository/MenuItemRepository.java - User repository
src/main/java/com/menugate/app/repository/UserRepository.java
Other components
- Visitors
- Restaurant owners
- Administrators
- Oracle XE database
- Google OAuth
Connections 26
- Visitors → MenuGate browser UI: browse
- Restaurant owners → MenuGate browser UI: manage menus
- Administrators → Admin page: review menus
- MenuGate browser UI → Menu and dashboard pages: opens
- MenuGate browser UI → Admin page: opens
- Menu and dashboard pages → UI workflows: renders
- Admin page → UI workflows: renders
- UI workflows → API client: makes requests
- API client → Public and owner menus: HTTP requests
- API client → Admin menu endpoints: admin requests
- API client → Session info endpoint: session requests
- Public and owner menus → Menu operations: delegates menu actions
- Admin menu endpoints → Menu operations: delegates admin actions
- Public and owner menus → API data contracts: accepts and returns
- Menu operations → API data contracts: maps responses
- Menu operations → Menu repository: reads and writes menus
- Menu operations → Menu-item repository: reads and writes items
- Menu operations → User repository: looks up owners
- User provisioning → User repository: finds and saves users
- Menu repository → Oracle XE database: persists menus
- Menu-item repository → Oracle XE database: persists items
- User repository → Oracle XE database: persists users
- Menu repository → User, menu, and item: maps menu data
- Menu-item repository → User, menu, and item: maps item data
- User repository → User, menu, and item: maps user data
- OAuth and access rules → Google OAuth: OAuth login