Overview
Build a unified dashboard shell that adapts navigation, layout, and quick actions based on the authenticated user's role: admin, driver, or investor.
Problem
ChainMove has multiple user roles with different workflows. A scalable dashboard shell is needed so contributors can add new dashboard modules without duplicating layout logic or creating inconsistent navigation patterns.
Expected solution
Implement a reusable dashboard layout system that includes:
- role-aware sidebar navigation
- mobile-friendly collapsible navigation
- dashboard header with user profile, notifications, and role badge
- quick action slots per role
- active route highlighting
- protected route handling
- graceful loading and unauthorized states
Role examples
Investor
- Portfolio
- Pools
- Wallet
- Transactions
- Governance
Driver
- Repayments
- Vehicle progress
- Wallet
- Notifications
- Profile/KYC
Admin
- Users
- KYC
- Fleet
- Investments
- Reports
- Payments
- Settings
Files likely involved
- dashboard layout files
- sidebar/navigation components
- auth/current-user helpers
- route guard utilities
- dashboard pages
- shared UI components
Acceptance criteria
- A reusable role-based dashboard shell exists.
- Navigation changes based on user role.
- Unauthorized users cannot access protected dashboard sections.
- Layout works on desktop and mobile.
- Loading and empty states are handled.
- Existing dashboard routes are not broken.
npm run lint and npm run build pass.
Suggested labels
dashboard, frontend, auth, hard, architecture
Difficulty
Hard
Overview
Build a unified dashboard shell that adapts navigation, layout, and quick actions based on the authenticated user's role:
admin,driver, orinvestor.Problem
ChainMove has multiple user roles with different workflows. A scalable dashboard shell is needed so contributors can add new dashboard modules without duplicating layout logic or creating inconsistent navigation patterns.
Expected solution
Implement a reusable dashboard layout system that includes:
Role examples
Investor
Driver
Admin
Files likely involved
Acceptance criteria
npm run lintandnpm run buildpass.Suggested labels
dashboard,frontend,auth,hard,architectureDifficulty
Hard