Skip to content

Unified Admin + Staff — summary ​

One workspace app (Admin/) replaces the retired teams portal (staff/UI/ removed from repo; local archive optional). Roles and RBAC control what each user sees; both beentara.com and teams.beentara.com should serve the same build after cutover.

Status ​

Implementation complete (M1–M23). Local verify: 7/7 API + 8/8 browser green (npm run verify:unified-cutover).

Your next steps are operational: production deploy and DNS. Optional: drop Backend legacy API aliases when logs show zero traffic.

Architecture at a glance ​

mermaid
flowchart LR
  subgraph clients [Browsers]
    A[beentara.com]
    T[teams.beentara.com]
  end
  subgraph static [One deploy]
    B[Admin/build]
  end
  subgraph api [Backend]
    API[api.beentara.com]
  end
  A --> B
  T --> B
  B --> API
LayerCanonical pathNotes
FrontendAdmin/Staff Login on /login; home /dashboard
Legacy staff app(removed)Archived locally; see staff-ui-retirement.md
RBAC catalogBackend/utils/rbacCatalog.jsRun npm run sync:rbac after path changes
Staff API authJWT + permissionGuardAdmin/SuperAdmin bypass; Staff fail-closed

Milestone index ​

Full history: unified-app-migration.md.

PhaseMilestonesOutcome
Unify UXM1–M5Staff auth, guards, menu, dashboard, route parity
API cleanupM6–M7, M11–M13Task list/history, archives, notes, enquiry create
Ship readinessM8–M10Env example, API + browser smoke, go-live sign-off
QAM9Playwright unified app smoke

Docs map ​

DocumentUse when
unified-app-go-live.mdPre-production sign-off
unified-app-cutover.mdDNS, single artifact, legacy URLs
unified-app-browser-qa.mdManual + Playwright UI checks
api-consolidation.mdWhich API paths are canonical vs legacy
staff-ui-retirement.mdAfter go-live: stop teams deploy

Verify locally ​

Backend on :5000, Admin on :3000:

bash
npm run dev:unified:backend
npm start --prefix Admin
npm run verify:unified-cutover:wait

Production: set REACT_APP_LINK in Admin/.env.production (not .env), then:

bash
npm run build:admin
# after deploy:
SMOKE_API_BASE=https://api.beentara.com ADMIN_URL=https://beentara.com npm run verify:unified-staging

Local Backend: Redis/FCM errors in the console are common without Redis; smokes only need /healthz + DB. Optional: DISABLE_REDIS=1, DISABLE_NOTIFICATION_WORKER=1 in Backend/.env (see .env.example).

Future (not scheduled) ​

  • Drop legacy API aliases once access logs show zero use

Beentara — Business management made simple.