Spa/Beauty UI (booking-service integration): - TherapistManagement.razor: CRUD table, specialty multi-select, working hours - AppointmentCalendar.razor: daily calendar grouped by therapist, color-coded statuses - ShopTherapists embedded component for ShopPage, sidebar menu for spa/beauty - BookingController BFF: therapist CRUD + appointment proxy endpoints - Localization: vi-VN + en-US for "Nhân viên trị liệu" Retail POS UI (catalog + inventory + order integration): - RetailDesktop.razor: barcode input, API lookup, stock badges, cart warnings - ReturnDialog.razor: order lookup, return/exchange mode toggle, refund summary - StockOverview.razor: admin stock table, search/filter, threshold edit dialog - PosDataService: barcode lookup, bulk stock, return/exchange API methods Cafe UI (membership + fnb-engine integration): - StampCard.razor: visual stamp grid, animated fill, celebration UI, claim/reset - BaristaQueue.razor: 3-column Kanban, stats bar, auto-refresh 10s, pulse animation - CafeController BFF: stamp cards + barista queue proxy endpoints Infrastructure: - Traefik: added /api/v1/therapists + /api/v1/appointments to booking-service - ROADMAP: Phase 2 vertical tasks DONE, UI refinement IN-PROGRESS Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Traefik Configuration
Traefik reverse proxy and load balancer configuration.
Files
traefik.yml- Static configurationdynamic/routes.yml- HTTP routing rulesdynamic/middlewares.yml- Middleware definitions (CORS, rate limiting, security headers)
Usage
Traefik will automatically discover services via Docker labels or file-based configuration.
Routes
/api/v1/auth/*-> Auth Service/api/v1/users/*-> Auth Service
Middlewares
secure-headers- Security headerscors- CORS configurationauth-ratelimit- Rate limiting for auth endpointscompress- Response compression