Legacy /client Decommission Checklist
Goal
Retire the legacy token-based /client experience and /api/client-access/* endpoints.
Current implementation strategy is now a hard cut (no backward compatibility).
Current Status (2026-02-22)
- Legacy
/clientroutes have been removed fromfrontend/src/router.tsx. - Legacy frontend route/page tree has been removed (
frontend/src/routes/client.routes.tsx,frontend/src/pages/client/**). - Legacy frontend
client-accesshooks/components used by/clienthave been removed. - Legacy backend public controller
/api/client-access/*(backend/src/client-access/client-access.controller.ts) has been removed and is no longer exposed. - Modern authenticated client portal
/portal/*is available and covers most document/session flows. - Proposal v2 public flow
/proposal/:tokenis available for quote add-ons and acceptance. - CI guard now blocks new
/clientreferences outside allowlisted legacy files (.gitlab-ci.ymljobguard:legacy-client-no-new-usage).
Scope Inventory (Legacy /client)
Frontend routes (frontend/src/routes/client.routes.tsx):
/client(dashboard/access landing)/client/quotes,/client/quotes/:quoteId/client/contracts,/client/contracts/:contractId/client/invoices,/client/invoices/:invoiceId/client/galleries/client/profile/client/sessions/:sessionId/client/paypal/return/:clientToken/client/paypal/cancel/:clientToken
Backend endpoints (legacy public token API):
/api/client-access/*inbackend/src/client-access/client-access.controller.ts
Migration Strategy (hard cut)
Phase 1: Parity Validation (recommended)
Validate replacement paths:
- Quotes/documents browsing ->
/portal/documentsand document detail routes - Sessions browsing ->
/portal/sessionsand session detail - Galleries ->
/portal/galleries - Profile ->
/portal/settings - Proposal/upsell quote selection ->
/proposal/:token(Proposal v2) - Payments (PayPal return/cancel) -> confirm final portal/public replacement path before removal
Phase 2: Link Issuance Cutover
- Stop generating new legacy
/clientlinks where a replacement exists - Prefer:
/portal/*for authenticated client area/proposal/:tokenfor Proposal v2 quote add-on flows
Phase 3: Traffic Observation
- Monitor remaining legacy
/clientand/api/client-access/*usage - Identify long-tail paths still hit in production (especially PayPal callbacks and contract signing flows)
Phase 4: Post-cut Cleanup (in progress)
Already removed:
- Legacy frontend route mount
/clientinfrontend/src/router.tsx frontend/src/routes/client.routes.tsxfrontend/src/pages/client/**frontend/src/components/layout/ClientLayout.tsxfrontend/src/client/client-access/**frontend/src/components/client-access/**- Legacy backend
/api/client-access/*controller exposure
Exit Criteria (Full Removal)
- No product feature depends on
/client - No new links generated for
/client - E2E coverage exists for replacement flows (
/portal,/proposal) - Stakeholder sign-off (support/ops if external links may still circulate)
Notes
- This checklist now documents a non-retrocompatible cut; external legacy links may fail.
- Keep this checklist synchronized with
docs/PROPOSAL_V2_UPSELLS_IMPLEMENTATION_PLAN.mdanddocs/ROADMAP.md.