64 lines
5.9 KiB
Markdown
64 lines
5.9 KiB
Markdown
# Current route and page map
|
|
|
|
Source: [App.tsx shell routes](../../../job-tracker-ui/src/App.tsx#L379) and [outer router](../../../job-tracker-ui/src/App.tsx#L472). 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](../../../job-tracker-ui/src/jobWorkspaceRoute.ts), [AppShell](../../../job-tracker-ui/src/layout/AppShell.tsx), [QuickCommandDialog](../../../job-tracker-ui/src/components/QuickCommandDialog.tsx), [workspace component](../../../job-tracker-ui/src/views/ApplicationWorkspacePage.tsx). Phase 3 may propose navigation merges; this inventory does not authorize deleting aliases or current functionality.
|