Planning
Problem
The app currently owns behavior in three route families: /communities/**, /community/**, and /proposals/**. Users can enter different implementations of the same product journey, and contributors must update multiple route trees.
Scope
Use /communities, /communities/create, /communities/[id], /communities/[id]/proposals, and /communities/[id]/proposals/[proposalId] as canonical destinations. Convert singular and global legacy pages into thin redirects that preserve relevant query parameters. Update all internal links, breadcrumbs, navigation, component tests, route tests, E2E specs, and current docs.
Mechanical recipe
- Add one route-builder module with typed helpers.
- Replace hard-coded community/proposal paths with those helpers.
- Replace legacy page bodies with redirects.
- Update test expectations and documentation links.
Acceptance criteria
- No production component hard-codes a primary
/community or global /proposals destination.
- Legacy URLs redirect to the equivalent canonical URL without losing identifiers or query parameters.
- Canonical route tests and Playwright navigation flows pass.
Verification
npm run lint && npm run typecheck && npm test && npm run test:e2e:ci
Planning
Problem
The app currently owns behavior in three route families:
/communities/**,/community/**, and/proposals/**. Users can enter different implementations of the same product journey, and contributors must update multiple route trees.Scope
Use
/communities,/communities/create,/communities/[id],/communities/[id]/proposals, and/communities/[id]/proposals/[proposalId]as canonical destinations. Convert singular and global legacy pages into thin redirects that preserve relevant query parameters. Update all internal links, breadcrumbs, navigation, component tests, route tests, E2E specs, and current docs.Mechanical recipe
Acceptance criteria
/communityor global/proposalsdestination.Verification
npm run lint && npm run typecheck && npm test && npm run test:e2e:ci