Frontend: Decompose Monolithic UI into a Page-Based Architecture#18
Merged
TimVerhaegen merged 13 commits intoDec 24, 2025
Merged
Conversation
|
@DagmawiKK is attempting to deploy a commit to the timverhaegen's projects Team on Vercel. A member of the Team first needs to authorize it. |
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.
this pull request represents a fundamental architectural overhaul of the frontend application. the previous implementation, which concentrated most of the application's ui and logic within two monolithic components (
editor.tsxandtokens.tsx), has been completely decomposed.it moves to a scalable, feature-centric, page-based architecture. each primary application feature (e.g., transform, upload, tokens) now resides in its own self-contained directory under
pages. this new structure improves code organization, separation of concerns, and developer experience, making it much easier to maintain and extend individual features without impacting others.key changes
1. new page-based architecture
the core of this pr is the introduction of the pages directory. each feature now follows a consistent and predictable structure:
pages/<feature>/<featurepage>.tsx: the main component and entry point for the feature.pages/<feature>/components/: a directory for child components that are specific to that feature page.pages/<feature>/lib.ts: a dedicated file to house all business logic, state management, and api interactions for the feature, completely decoupling logic from the ui.2. feature migration to new pages
all major application functionalities have been rebuilt as independent pages following the new architecture:
pages/clear/clear.tsxpages/export/export.tsxpages/transform/transform.tsxpages/load/load.tsx(including d3 graph visualization)pages/upload/upload.tsxpages/tokens/tokens.tsx3. new foundational component library
to support the new pages, a comprehensive and reusable component library was included.
components/ui/): a rich set of basic components has been added, includingbutton,card,dialog,select,textfield, and many more.components/common/): application-specific shared components likecommandcardandmettaeditorwere created to ensure a consistent look and feel across all pages.4. new application shell (
pages/index/)a new primary application container has been implemented in
pages/index/index.tsx. this component is responsible for the main layout, including theheader,sidebar, andnamespaceselection, and serves as the host for all the individual feature pages.5. deprecation and removal of monolithic components
as the final step of this migration, the original, oversized components have been removed, completing the transition to the new architecture.
frontend/src/editor.tsxfrontend/src/tokens.tsx