How chiranat/pos-system works
This restaurant POS supports QR-based customer ordering, staff table/session operations, kitchen order handling, and admin menu, staff, sales, and transaction workflows. The main path is opening a table to create a tokenized session and QR, ordering against that session, kitchen status updates, then payment and session closure; reporting summarizes completed transactions. The README documents WebSocket kitchen updates and PDF export, but sampled source does not show their implementation or wiring, so those links are left unverified. Frontend-to-API relationships are documented only where visible in sampled files.
Main entry points: PosApplication.java POS API · index.js Role Routes · OrderRepository.java Order Store · TableService.java Table Sessions & QR
Components 27
POS Web App
- Vue Application
frontend/src/App.vue - Role Routes
frontend/src/router/index.js - Auth Store
frontend/src/stores/auth.js - Customer Menu
frontend/src/views/CustomerMenuView.vue - Table Console
frontend/src/views/HomeView.vue - Kitchen Display
frontend/src/views/KitchenView.vue - Admin Views
frontend/src/views/DashboardView.vue
Identity & Access
- Authentication
backend/src/main/java/com/chiranat/pos/service/AuthService.java - Staff Management
backend/src/main/java/com/chiranat/pos/service/UserService.java - Staff Endpoints
backend/src/main/java/com/chiranat/pos/controller/UserController.java
Restaurant Operations
- POS API
backend/src/main/java/com/chiranat/pos/PosApplication.java - Table Sessions & QR
backend/src/main/java/com/chiranat/pos/service/TableService.java - Table Endpoints
backend/src/main/java/com/chiranat/pos/controller/TableController.java - Order Handling
backend/src/main/java/com/chiranat/pos/service/OrderService.java - Kitchen Workflow
backend/src/main/java/com/chiranat/pos/controller/KitchenController.java - Payments & Receipts
backend/src/main/java/com/chiranat/pos/service/TransactionService.java - Dining Session Store
backend/src/main/java/com/chiranat/pos/repository/DiningSessionRepository.java - Order Store
backend/src/main/java/com/chiranat/pos/repository/OrderRepository.java
Menu & Media
- Menu Management
backend/src/main/java/com/chiranat/pos/service/MenuService.java - Image Storage
backend/src/main/java/com/chiranat/pos/service/FileStorageService.java - Upload Endpoint
backend/src/main/java/com/chiranat/pos/controller/FileUploadController.java - Menu Endpoints
backend/src/main/java/com/chiranat/pos/controller/AdminMenuController.java
Sales & Records
- Sales Reporting
backend/src/main/java/com/chiranat/pos/service/ReportService.java - POS Database
backend/src/main/java/com/chiranat/pos/model/DiningSession.java - Report Endpoints
backend/src/main/java/com/chiranat/pos/controller/ReportController.java
Other components
- Customer
- Restaurant Staff
Connections 38
- Customer → Vue Application: uses
- Restaurant Staff → Vue Application: uses
- Vue Application → Role Routes: mounts
frontend/src/main.js - Role Routes → Auth Store: checks access
frontend/src/router/index.js - Role Routes → Customer Menu: routes to
frontend/src/router/index.js - Role Routes → Table Console: routes to
frontend/src/router/index.js - Role Routes → Kitchen Display: routes to
frontend/src/router/index.js - Role Routes → Admin Views: routes to
frontend/src/router/index.js - Auth Store → POS API: HTTP auth
frontend/src/stores/auth.js - POS API → Authentication: dispatches auth
- POS API → Table Endpoints: routes requests
- Table Endpoints → Table Sessions & QR: calls
backend/src/main/java/com/chiranat/pos/controller/TableController.java - Table Sessions & QR → Dining Session Store: reads/writes
backend/src/main/java/com/chiranat/pos/service/TableService.java - Table Sessions & QR → Order Store: reads orders
backend/src/main/java/com/chiranat/pos/service/TableService.java - Table Sessions & QR → POS Database: persists session
backend/src/main/java/com/chiranat/pos/model/DiningSession.java - Customer Menu → POS API: orders via API
- POS API → Order Handling: dispatches orders
- Order Handling → Dining Session Store: loads session
backend/src/main/java/com/chiranat/pos/service/OrderService.java - Order Handling → Order Store: persists orders
backend/src/main/java/com/chiranat/pos/service/OrderService.java - Kitchen Display → POS API: requests updates
- POS API → Kitchen Workflow: dispatches kitchen
- Kitchen Workflow → Order Store: updates status
- Table Console → Table Endpoints: HTTP table actions
- POS API → Payments & Receipts: dispatches payment
- Payments & Receipts → Dining Session Store: reads/closes session
backend/src/main/java/com/chiranat/pos/service/TransactionService.java - Payments & Receipts → Order Store: reads orders
backend/src/main/java/com/chiranat/pos/service/TransactionService.java - Payments & Receipts → POS Database: records transaction
backend/src/main/java/com/chiranat/pos/service/TransactionService.java - POS API → Menu Endpoints: routes menu
- Menu Endpoints → Menu Management: calls
backend/src/main/java/com/chiranat/pos/controller/AdminMenuController.java - POS API → Upload Endpoint: routes uploads
- Upload Endpoint → Image Storage: stores files
backend/src/main/java/com/chiranat/pos/controller/FileUploadController.java - POS API → Staff Endpoints: routes staff
- Staff Endpoints → Staff Management: calls
backend/src/main/java/com/chiranat/pos/controller/UserController.java - POS API → Report Endpoints: routes reports
- Report Endpoints → Sales Reporting: dispatches reports
- Admin Views → POS API: requests reports
- Sales Reporting → Order Store: queries orders
backend/src/main/java/com/chiranat/pos/service/ReportService.java - Sales Reporting → POS Database: aggregates transactions
backend/src/main/java/com/chiranat/pos/service/ReportService.java