Pages and routes
Reference of eu-home-app routes, grouped by area. Component paths are relative to frontend/apps/eu-home-app/.
Route table by area
Home
| Path |
Component |
Purpose |
/ |
app/pages/Home.tsx |
Dashboard and quick links |
/news |
(redirect) |
Redirects to / |
Team
Backed by areas, units, crews, communities, on-call groups, smart groups (see Smart Groups, On-Call Groups).
| Path |
Component |
Purpose |
/team |
(redirect) |
Redirects to current user's team (community, crew, or area) |
/team/communities, /team/areas, /team/units, /team/crews |
(redirect) |
Redirect to first relevant team for current user |
/team/:type/new/* |
app/pages/Team/index.tsx (TeamRoot) |
Create new team (type = communities, areas, units, crews, etc.) |
/team/:type/:slugOrId/* |
app/pages/Team/index.tsx (TeamRoot) |
Team hub; nested routes below |
/team/:type/:slugOrId/settings |
app/pages/Team/SettingsTab.tsx |
Team settings |
/team/:type/:slugOrId/criteria |
app/pages/Team/CriteriaTab.tsx |
Criteria tab (smart groups) |
/team/:type/:slugOrId/members |
app/pages/Team/MembersTab.tsx |
Members |
/team/:type/:slugOrId/ooo |
app/pages/Team/OOOTab.tsx |
Out of office |
/team/:type/:slugOrId/sfa |
app/pages/Team/SFATab.tsx |
SFA tab |
/team/:type/:slugOrId/areas |
app/pages/Team/AreasTab.tsx (UnitAreas) |
Unit's areas |
/team/:type/:slugOrId/crews |
app/pages/Team/CrewsTab.tsx (AreaCrews) |
Area's crews |
Profile
Alaner profile (and external user profile when :userId is a UUID). See User Lifecycle.
| Path |
Component |
Purpose |
/profile |
(redirect) |
Redirects to /profile/:userId (current user) |
/profile/subscriptions |
(redirect) |
Redirects to current user's subscriptions tab |
/profile/:userId/* |
app/pages/UserProfile.tsx → AlanerProfile or ExternalUserProfile |
Profile hub; userId can be slack_handle, numeric id, or UUID (external user) |
/profile/:userId (Alaner) |
app/pages/AlanerProfile/index.tsx |
SFAs or Timeline (default tab) |
/profile/:userId/SFAs |
app/pages/AlanerProfile/SFAList.tsx |
SFAs list |
/profile/:userId/timeline |
app/pages/AlanerProfile/Timeline.tsx |
Timeline |
/profile/:userId/ooo |
app/pages/AlanerProfile/OOOCalendar.tsx |
OOO calendar |
/profile/:userId/subscriptions |
app/pages/AlanerProfile/Subscriptions.tsx |
Subscriptions |
/profile/:userId/roles |
app/pages/AlanerProfile/RolesManagement.tsx |
Roles |
/profile/:userId/feedback |
app/pages/AlanerProfile/Feedback.tsx |
Feedback |
/profile/:userId/checkpoints |
app/pages/AlanerProfile/Checkpoints.tsx |
Checkpoints (coach/reviewee) |
/profile/:userId/external-users |
app/pages/AlanerProfile/ExternalUsers.tsx |
External users |
/profile/:userId/settings |
app/pages/AlanerProfile/Settings.tsx |
Profile settings (current user only) |
Subscriptions
| Path |
Component |
Purpose |
/subscriptions |
app/pages/Subscriptions/index.tsx |
Subscriptions hub |
/subscriptions/ (index) |
app/pages/Subscriptions/SubscriptionsSfa.tsx |
SFAs subscriptions |
/subscriptions/ooo |
app/pages/Subscriptions/SubscriptionsOOO.tsx |
OOO subscriptions |
| Path |
Component |
Purpose |
/tools |
app/pages/Tools.tsx |
Tools index |
/tools/summary |
app/pages/SummaryTool.tsx |
Summary tool |
/tools/audio |
app/pages/AudioTool.tsx |
Audio tool |
/tools/spacefinder |
app/pages/SpaceFinder/index.tsx |
Space finder |
/tools/role-definition-with-grant-rules |
app/pages/RoleWithGrantRulesReview.tsx |
Role definition with grant rules |
/tools/activepieces-flows |
app/pages/ActivePiecesFlows.tsx |
ActivePieces flows |
/tools/logo-integrator |
app/pages/LogoIntegrator.tsx |
Logo integrator |
/tools/postcard-generator |
app/pages/PostcardGenerator.tsx |
Postcard generator |
/tools/media-generator, /tools/media-generator/me, /tools/media-generator/all |
app/pages/MediaGenerator/MediaGenerator.tsx |
Media generator |
/tools/media-generator/stats |
app/pages/MediaGenerator/MediaGeneratorStats.tsx |
Media generator stats |
/tools/sales-prospecting |
app/pages/SalesProspecting/index.tsx |
Sales prospecting |
External users
| Path |
Component |
Purpose |
/external-users |
app/pages/ExternalUserManager/index.tsx |
External user manager (list, create, edit) |
Equity
| Path |
Component |
Purpose |
/equity |
(redirect) |
Redirects to /equity/:slackHandle (current user) |
/equity/simulate |
app/pages/EquityDashboard/EquitySimulator.tsx (EquitySimulatorDashboard) |
Equity simulator |
/equity/:slackHandle |
app/pages/EquityDashboard/index.tsx |
Equity dashboard |
On-call
See On-Call Groups.
| Path |
Component |
Purpose |
/on-call |
app/pages/Oncall/index.tsx (OncallRedirect) |
Redirects to first on-call group |
/on-call/new/* |
app/pages/Oncall/index.tsx (OncallGroupPage, create) |
Create on-call group |
/on-call/:slugOrId/* |
app/pages/Oncall/index.tsx (OncallGroupPage) |
On-call group hub |
/on-call/:slugOrId/schedule |
app/pages/Oncall/OncallScheduleTab.tsx |
Schedule tab |
/on-call/:slugOrId/roster |
app/pages/Oncall/OncallRosterTab.tsx |
Roster tab |
/on-call/:slugOrId/settings |
app/pages/Oncall/OncallSettingsTab.tsx |
Group settings |
Reviews
See Reviews.
| Path |
Component |
Purpose |
/reviews |
app/pages/Reviews/index.tsx (ReviewsHome) |
Reviews home (cycles, todos) |
/reviews/:reviewId/select-reviewers |
app/pages/Reviews/PickReviewers.tsx |
Pick reviewers |
/reviews/:reviewId/validate-reviewers |
app/pages/Reviews/ValidateReviewers.tsx |
Validate reviewers |
/reviews/:reviewId/:reviewSubmissionId |
app/pages/Reviews/WriteReview.tsx |
Write review (reviewer submission) |
/reviews/:reviewId |
app/pages/Reviews/ViewReview/index.tsx |
View review (reviewee/coach) |
Sales introductions
| Path |
Component |
Purpose |
/sales-intros |
app/pages/SalesIntroductions/index.tsx |
Sales introductions |
Anomalies
| Path |
Component |
Purpose |
/anomalies |
app/pages/AnomaliesManager/index.tsx |
Anomalies manager |
Slack audio cleanup
| Path |
Component |
Purpose |
/slack-audio-cleanup |
app/pages/SlackAudioCleanup/index.tsx |
Slack audio cleanup tool |
Service accounts
| Path |
Component |
Purpose |
/service-accounts |
app/pages/ServiceAccountManager/index.tsx |
Service accounts list |
/service-account/:serviceAccountId/* |
app/pages/ServiceAccountManager/ServiceAccountProfile.tsx |
Service account profile (tabs) |
Work from anywhere (WFA)
| Path |
Component |
Purpose |
/wfa |
app/pages/WorkFromAnywhere/index.tsx |
WFA hub (List by default) |
/wfa/ (index) |
app/pages/WorkFromAnywhere/List.tsx |
List view |
/wfa/map |
app/pages/WorkFromAnywhere/Map.tsx |
Map view |
Other
| Path |
Component |
Purpose |
/anonymization |
app/pages/Anonymization.tsx |
Anonymization tool (restricted) |
* (no match) |
app/pages/NotFound.tsx |
404 page |
Routing overview
Routes are defined in two places:
- Root:
frontend/apps/eu-home-app/app/App.tsx — top-level <Routes> with <Route path="..." element={...} />. Nested layouts (e.g. /team, /on-call, /profile) render a layout component that contains a second <Routes> for sub-paths.
- Nested: Inside page components that act as hubs:
Team/index.tsx (TeamRoot), Oncall/index.tsx (OncallGroupPage, OncallRoot), Reviews/index.tsx, UserProfile → AlanerProfile/index.tsx, Subscriptions/index.tsx, WorkFromAnywhere/index.tsx, MediaGenerator (routes in App.tsx only for /me, /all, /stats).
Redirects:
/ → Home; /news → /; /profile → /profile/:userId; /profile/subscriptions → profile subscriptions tab.
/team → current user's team URL (community, crew, or area); /team/communities, /team/areas, etc. → first relevant team.
/equity → /equity/:slackHandle; /on-call → /on-call/:slugOrId (first group).
Layout: the main shell is app/components/Layout.tsx. Many features use tabbed sub-nav (e.g. Team tabs, Profile tabs, On-call tabs) defined next to their <Routes> in the same page component.
Adding a new page
- Create the page: Add a folder under
app/pages/<FeatureName>/ with an index.tsx (or a single file under app/pages/ for a one-off page).
- Register the route: In
App.tsx, add a <Route path="..." element={<YourComponent />} /> either at the top level or inside an existing parent (e.g. under /tools for a new tool). For nested routes, add the route in the parent page's <Routes> (e.g. in Team/index.tsx for a new team tab).
- Navigation: If the page should appear in the sidebar or in a feature's tabs, add a link in
Layout (sidebar) or in the feature's tab list (e.g. TabList in Team, Profile, etc.).
See also