Surface map
flowchart TB
subgraph STAFF["Staff SPA — frontend/"]
DASH["/dashboard"]
POS["/pos/*"]
ADM["/admin/*"]
INV["/inventory/*"]
REP["/reports/*"]
BH["/business-hub"]
MA["/master-admin/*"]
end
subgraph PUBLIC["Public SPA — public-site/"]
HOME["Marketing /"]
SIGN["/signup · /login"]
STORE["/:slug/store"]
BC["/barcode"]
end
subgraph PORTALS["Also on staff SPA or public"]
EMP["/employee-portal"]
TIX["public ticket portals"]
BOOK["/book/:slug"]
SIGP["/:slug/signage/:display"]
end
STAFF --> API["backend :4000"]
PUBLIC --> API
PORTALS --> API
URL cheat sheet (staging)
| Audience | Example paths | App |
| Merchant staff | /login → /dashboard · /pos · /admin | frontend |
| Platform operator | /master-admin | frontend |
| Shoppers | /{tenant}/store | frontend store routes + public marketing |
| Employees (ESS) | /employee-portal/{tenant} | frontend |
| Service customers | /book/{tenant} · public tickets | frontend |
| Lobby displays | /{tenant}/signage/{slug} | frontend SignagePlayer |
| Anyone (catalog demo) | /barcode on public site | public-site |
| Developers (us) | dochub.gopastearth.com | DocHub static |
Nginx routing mental model
| Path prefix | Goes to |
/api /auth /customer /media | Backend :4000 |
/admin /dashboard /login /pos … | Frontend Vite :5173 |
/ marketing etc. | public-site dist/ |