Files
jobtrackingapp/docs/redesign/audit/ROUTE_MAP.md
T
2026-09-09 19:29:39 +02:00

5.9 KiB

Current route and page map

Source: App.tsx shell routes and outer router. All paths below are current behavior, not target architecture. Preserve or redirect every path intentionally. :id and :slug represent route patterns, not single records.

Public entry routes

Route Component Contract
/ LandingPage Public product/plans and sign-in entry; authenticated redirection behavior has its own test
/login LoginPage Local/Google/Microsoft sign-in, verification/2FA branches
/register LoginPage (initialMode=register) Configuration-gated account creation
/forgot-password ForgotPasswordPage Request reset without disclosing account existence
/reset-password ResetPasswordPage Token-bearing reset flow
/verify-email VerifyEmailPage Verification-token flow
/confirm-email-change VerifyEmailPage (emailChange) Pending email-change confirmation
/microsoft-legacy-relink MicrosoftLegacyRelinkPage Existing-account recovery/relink flow
/cv/:slug PublicCvPage Explicitly published CV preview/PDF; no general private CV access

Application routes

The shell resolves auth/config and /auth/me; deployed server authentication remains authoritative. Admin navigation is hidden for ordinary accounts, while API role checks enforce access even for crafted deep links. A routed component is not itself an authorization boundary.

Route Component Entry / preservation requirement
/dashboard DashboardView Personal metrics, next actions, onboarding and local widget visibility
/discover JobDiscoveryPage NAV search, saved searches/alerts, review before tracker import
/jobs JobTable (jobs) Filters, search, sort, pagination, saved views, columns, selection/bulk actions, full/preview workspace
/jobs/:id ApplicationWorkspacePage Full job workspace; section/follow-mode query semantics
/reminders RemindersView Follow-ups, deadlines and progression actions
/operations OperationsPage Background progress/retry/cancel and notifications; reachable outside main nav
/kanban KanbanBoard Alternate view of the same jobs; grouped statuses, keyboard and pointer moves
/companies CompaniesTable Company/contact editing and relationship detail; ?edit=id command entry
/offers OfferComparisonPage Comparison of recorded offers and links to source workspaces
/correspondence CorrespondenceInboxPage Inbox, provider messages, drafts, reply/send and review mode
/correspondence/review Redirect Existing alias to /correspondence?view=review
/profile ProfilePage Account identity/avatar/password/email; security cards and account links
/applications/:id LegacyApplicationRedirect Existing alias to /jobs/:id; preserves search and router state
/career CareerWorkspacePage → CareerProfilePage Canonical profile, import/review, history and evidence bank
/career/builder CvBuilderPage CV library, templates, creation/copy/manage/share/export
/career/builder/:id CvBuilderEditor Persisted CV variant studio, preview, history and AI review
/admin/audit AdminAuditPage Admin event history and permitted undo/restore
/admin/users AdminUsersPage Admin account/role/reset/deletion controls
/admin/system AdminSystemPage Admin service/configuration/maintenance/benchmark diagnostics
/trash JobTable (trash) Deleted-job listing and restoration; retain distinct mode semantics
/settings SettingsView General, follow-up rules, notifications and backup/account lifecycle tabs
/settings/connected-accounts ConnectedAccountsPage Gmail, Microsoft Graph and IMAP provider connections

There are 31 concrete patterns: 29 page patterns and two redirect aliases. The remaining three declarations in the AST census are the outer /* shell, inner * NotFoundPage and inner root redirect. The explicit outer / landing route takes precedence over the shell's root redirect. RouteErrorPage is an error boundary, not a separate URL. Do not manufacture an /analytics, /documents or /notifications page from the target brief: their current functions are embedded in dashboard/job/operations/settings surfaces.

Non-route entries and state contracts

Entry Current effect
Shell add button; command action; capture URL ?add= / ?addtext= Opens AddJobModal and consumes the query. Browser extension/bookmarklet/share entry depends on this
Job row/card; preview action Full job page or reused ApplicationWorkspace overlay; preserve close/focus, dirty protection and full-page handoff
/jobs/:id?section=... Overview, analysis, CV, cover-letter or interview; older match, job-details/checklist/documents/timeline/communication values map through existing route helpers
/applications/:id and older tab contracts Legacy redirects and numeric tab-to-section mapping; covered by route-contract tests
Command search Ctrl/Cmd+K Jobs and companies plus six static commands; company result uses /companies?edit=id
Notifications/reminders/operations Deep links can enter a job subsection or processing result without first visiting Jobs
Builder public/share/PDF Public slug lifecycle is separate from authenticated numeric CV identity
OAuth popups/callbacks Provider/backend callback and postMessage flow; not additional React pages. Preserve exact origin/state contracts

Sources: jobWorkspaceRoute, AppShell, QuickCommandDialog, workspace component. Phase 3 may propose navigation merges; this inventory does not authorize deleting aliases or current functionality.