Page Route Inventory
Every screen the web app serves — all 39 Next.js page routes, in plain English, grouped by area.
This page is the complete list of the URLs a person can visit in the KAP web application. For what each screen calls, see the Page → API Map. Each row is one page route: the address on the left is what appears in the browser’s address bar; the right column says what the screen shows in product terms. It is the companion to Folder Structure, which explains how the web/app/ folder tree becomes these URLs — the same way the API Endpoint Inventory accompanies Backend API & Swagger for the data routes under /api (which are deliberately not repeated here).
How to read the addresses:
- Parts in curly braces are variable —
/datasets/{slug}means “the page for whichever dataset the address names”. In the source tree these are the square-bracket folders (app/datasets/[slug]/). - The route groups
(public)and(authenticated)in the source tree never appear in URLs — they only choose the wrapper. Every route listed under a “sign-in required” section sits inside(authenticated)/, whose layout redirects signed-out visitors to/login. What signed-in users can do on each screen is governed by their organization role — see Roles & Access Control. - A few rows are redirects: visiting them immediately forwards the browser somewhere else (kept so old links and bookmarks keep working).
Public pages (no sign-in)
| Route | What it shows |
|---|---|
/ |
The marketing landing page — product pitch, links to kavai.com, and the sign-in/sign-up calls to action. |
/login |
The sign-in form. Already signed in? middleware.ts forwards you straight to the default workspace landing (/w/integrity/campaigns). |
/signup |
The account-creation form. |
Sign-up, sign-in, and account-recovery flow
These live directly under app/ (outside the two route groups) because they are visited mid-flow — after clicking a link in an email, or before the account is fully set up.
| Route | What it shows |
|---|---|
/auth/confirm-email |
“Check your inbox” — shown right after signing up, while the confirmation email is on its way. |
/auth/reset-password |
Request a password-reset email. |
/auth/update-password |
Choose a new password (reached from the reset email). |
/onboarding |
First-run setup after email confirmation: your full name and your first organization. |
/forbidden |
The “access denied” screen, with a way back to the Integrity Engineer workspace. |
Two neighbors under /auth/ are not pages but browser-visited GET handlers (route.ts files) that finish Supabase auth flows and then redirect: /auth/callback (OAuth/magic-link return) and /auth/confirm (email-confirmation return).
Workspace entry points (sign-in required)
The two role workspaces (see Workspaces) live under /w/. The bare workspace URLs are redirects to each workspace’s landing module — middleware.ts and the w/[workspace]/ layout handle them, and an unknown workspace slug gets a 404.
| Route | Where it goes |
|---|---|
/w/data-explorer |
→ /w/data-explorer/organizations (the workspace’s landing module). |
/w/integrity |
→ /w/integrity/campaigns (the workspace’s landing module). |
Data Explorer workspace (sign-in required)
One route per module, under /w/data-explorer/. The sidebar label shown in the app is noted where it differs from the URL.
| Route | What it shows |
|---|---|
/w/data-explorer/organizations |
Organizations — pick the organization whose campaign evidence you’re working on. The workspace landing page. |
/w/data-explorer/campaigns |
Campaigns — browse, create, and manage campaign evidence packages. |
/w/data-explorer/anomalies |
Evidence — imagery, annotations, modality coverage, and evidence quality for the campaign. |
/w/data-explorer/anomalies/map |
The 3D map view of the evidence — anomaly-bearing photos plotted on the Cesium globe (the photo-map-3d module). |
/w/data-explorer/insights |
Notes — curate observations and supporting attachments for the campaign. |
/w/data-explorer/assets |
Assets — the anomalies found on one asset and on the images near it, over its anomaly-bearing evidence images (no findings; that’s the Integrity side). |
/w/data-explorer/ask |
A deep link that opens the docked AI Assistant panel — the Assistant overlays every module, so this exists for shareable/scoped URLs, not as a nav destination. |
/w/data-explorer/new-dataset |
The dataset-onboarding wizard — connect Azure storage and create a campaign dataset. |
/w/data-explorer/cad-viewer |
The Autodesk APS CAD viewer. Reachable by URL only — no workspace lists it in its sidebar. |
/w/data-explorer/operations |
Redirect → /w/data-explorer/campaigns (the module’s old name). |
/w/data-explorer/organisations |
Redirect → /w/data-explorer/organizations (the British spelling, kept for old links). |
Integrity Engineer workspace (sign-in required)
One route per module, under /w/integrity/.
| Route | What it shows |
|---|---|
/w/integrity/campaigns |
Campaigns — the campaign triage overview. The workspace landing page. |
/w/integrity/insights |
Findings — compare and prioritize campaign findings for engineering review. |
/w/integrity/investigate |
Investigate — validate one finding against its physical evidence. |
/w/integrity/assets |
Assets — one asset’s findings and the governed decide loop (each finding opens its evidence images). ?asset=<equipmentId> deep-links to one asset (what a marker click in the 3D map sends). |
/w/integrity/evidence-explorer |
Evidence Explorer — map, gallery, and ranked candidates for one campaign. ?asset=<equipmentId> flies the map to that asset once and is then stripped from the URL (what View in 3D on Assets sends). |
/w/integrity/actions |
Actions — create and manage the campaign’s follow-up work orders. |
/w/integrity/history |
Campaign History — the campaign chronology and status timeline. |
/w/integrity/ask |
The Assistant deep link — same behavior as the Data Explorer one. |
/w/integrity/operations |
Redirect → /w/integrity/campaigns (the module’s old name). |
Dataset management (sign-in required)
The classic dataset pages, predating the workspaces; they render inside the signed-in app shell.
| Route | What it shows |
|---|---|
/datasets |
Your organizations, as the entry point for browsing their datasets. |
/datasets/org/{id} |
All datasets in one organization. |
/datasets/{slug} |
One dataset’s detail page — its imagery and viewers. |
/datasets/{slug}/settings |
Edit the dataset’s name, description, visibility, and cover image (owners only — others are sent back to the dataset page). |
/datasets/create |
The classic create-a-dataset form (name, organization, storage provider). Lives outside the route groups; checks your session itself. |
Organizations, account, and settings (sign-in required)
| Route | What it shows |
|---|---|
/organizations |
The organizations you belong to, with your role in each. |
/organizations/create |
Create a new organization. |
/organizations/{id} |
One organization’s detail page — members and datasets. |
/profile |
Your profile — display name and avatar. |
/settings |
Account and organization settings. |
Developer utilities
| Route | What it shows |
|---|---|
/api-docs |
The interactive Swagger documentation for the backend API (no login — it renders the public spec; see Backend API & Swagger). |
/debug/cesium-token |
A diagnostics page for the Cesium Ion token configuration (sign-in required). |
What else answers a URL
- The 404 page.
app/not-found.tsxrenders for any address that matches nothing above. /api/…— the ~97 backend route handlers, catalogued operation by operation in the API Endpoint Inventory.app/dashboard/is gone. It held only a leftoverloading.tsxfor a page that had been removed, and its three/api/dashboard/*handlers served a summary view that no longer exists — including a second way to delete a dataset, alongside the one the dataset page itself uses. Retired 2026-08-25.
This inventory is hand-maintained, like the API one: when you add, move, or remove a page.tsx under web/app/, update this page in the same change.
Last Updated: 2026-08-01