Repository navigation
Separate application composition from dashboard feature - #52
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Application-wide composition was stored under
features/dashboard, even though the shell, identity, and access boundary are shared by every protected route. This made the dashboard feature appear responsible for routines, history, settings, authentication access, and the overall application frame.The same folder also contained
SectionLanding, a generic abstraction used only to render temporary headings for unfinished routes.What changed
apps/web/src/app/for application-wide composition.ApplicationShelland its test intosrc/app.ApplicationIdentityintosrc/app.DashboardAccessBoundarytoApplicationAccessBoundaryand moved it and its test intosrc/app.SectionLandingabstraction.app/andfeatures/inAGENTS.md.Resulting ownership
src/app/contains application-wide composition: the protected shell, access boundary, and identity shared across routed features.src/features/dashboard/now contains only the dashboard landing page and its focused test. Other product capabilities remain under their own feature folders as they are implemented.Why this design
applicationis not a product feature, so placing it underfeatures/applicationwould still blur the meaning of the feature directory. A top-levelapp/folder communicates that these modules compose and govern the protected React application rather than implement one user-facing capability.The access boundary is also renamed because it protects the entire
_approute tree, not only/dashboard.Removing
SectionLandingavoids preserving an abstraction whose only job was sharing one heading. The temporary duplication will disappear as each real feature page is implemented, and each route now clearly owns its placeholder.Behavior
This is an organization-only refactor. Authentication resolution, guest access, profile exit, navigation, dashboard introduction, and responsive behavior are unchanged.
Verification
pnpm --filter @goforlift/web typecheckpnpm --filter @goforlift/web test -- --reporter=dot— 21 tests passedpnpm --filter @goforlift/web lintgit diff --check