Skip to content

Routes and Pages

All routes are defined in frontend/src/App.tsx. This page lists every route and the page component it renders.

Route map

Route Page component What the user does here
/login LoginPage Sign in with email/password (local) or Cognito (AWS)
/projects ProjectListPage Browse and manage all projects
/projects/new NewProjectPage Create a new project
/projects/:projectId ProjectDetailPage View a project's repositories, scan rollup, and findings summary
/repositories/:id RepositoryDetailPage Repository overview with tabs
/repositories/:id/setup RepositorySetupPage Connect or upload source code; track ingest status
/repositories/:id/source SourceViewPage Browse the ingested file tree
/repositories/:id/threat-profile ThreatProfilePage Edit the threat profile
/repositories/:id/scans ScansPage View scan history, start scans, watch live progress
/repositories/:id/findings RepositoryFindingsPage Browse and triage findings for this repository
/findings FindingsInboxPage Cross-project findings inbox (all open findings)
/scans ScansFeedPage Cross-project scan activity feed
/api-keys ApiKeysPage Create and revoke programmatic API keys
/billing BillingPage Usage summary and cost breakdown
/settings SettingsPage Account and workspace settings

Protected routes

All routes except /login require authentication. The useAuth hook manages auth state. If the user is not authenticated and navigates to a protected route, they are redirected to /login.

Page files

All page components live in frontend/src/pages/. The naming convention is <RouteName>Page.tsx.

Finding a specific UI behavior

When you need to find where a particular UI behavior is implemented:

  1. Identify the route from the table above
  2. Open the corresponding page component in frontend/src/pages/
  3. Look for API calls — they all go through frontend/src/api/client.ts
  4. Look for shared UI components in frontend/src/components/dashboard/

If a page calls the wrong API endpoint, check frontend/src/api/client.ts first, then the route params in the page component.