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.