| Route | Purpose |
|---|
/dashboard | Main dashboard with completion trackers and widgets |
- Displays user’s
displayName or email
- “Watch intro” button opens video modal (YouTube:
m3f2QvBwBgI)
- Auto-shows intro on first visit (tracked via
localStorage.hasSeenIntroVideo)
- Complete Your Profile - Links to
/profile, shows setup video
- Welcome to Mindhyv - Links to Product Hunt vote
- If no referral code: Simple invite button + generate code option
- If has referral code: Share dialog with 6 sharing methods (Native Share, Email, WhatsApp, X/Twitter, LinkedIn, Facebook)
- Referral URL format:
https://mindhyv.com/?referralCode={code}
- Status: Active until
canUnlockHubBuilder is true
- Shows profile completion percentage
- Links to
/profile
- Amber alert if incomplete: lists specific missing items
- Status: Locked until profile complete
- Dynamic title: “Create Your First Hub” or “Complete Your Hub: [Name]”
- Links to
/hubs/new or specific incomplete item
- Green success when marketplace-ready
- Status: Locked until profile complete
- Can trigger: generate referral code or invite friends dialogs
- Shows completion percentage
- Status: Always “upcoming” / “Coming soon”
| # | Item | Validation | Required For |
|---|
| 1 | Profile Picture | photoURL exists | Hub Builder |
| 2 | Tagline | Non-empty, trimmed | Hub Builder |
| 3 | About Me | >= 100 characters | Hub Builder |
| 4 | Location | location or country set | Hub Builder |
| 5 | Timezone | timeZone set | Hub Builder |
| 6 | Language | languages array length > 0 | Hub Builder |
| 7 | Skills | At least 1 skill | Hub Builder |
| 8 | Work Experience | At least 1 entry | Hub Builder |
Percentage: (completed / 8) * 100
Unlock: All 8 complete = Hub Builder unlocked
| # | Item | Weight | Validation |
|---|
| 1 | Header Info | 10% | Tagline AND displayName both set |
| 2 | Branding Photos | 0% (required) | Cover image AND (logo OR favicon) |
| 3 | Main Content | 30% | Total content >= 250 characters |
| 4 | Services | 25% | At least 1 service |
| 5 | Media | 10% | At least 1 media asset |
| 6 | Payment Account | 25% | Stripe Connect linked |
100% = marketplace-ready. All 6 items must be complete.
- Users can add/remove/configure widgets in edit mode
- Grid layout: 4 columns, 120px row height
- Changes debounce-saved to Firestore (600ms)
- Stored at
users/{uid}/dashboards/{dashboardId}
| Widget | Category | Description |
|---|
sales_summary | Sales | Revenue and order totals |
orders | Sales | Recent/active orders |
payouts | Sales | Earnings and payout history |
messages | Chat | Chat inbox |
inbox | Chat | Messages and notifications |
team_chat | Chat | Team conversations |
active_projects | Projects | Current projects |
project_board | Projects | Task/milestone board |
milestones | Projects | Project progress |
recommended_sellers | General | Discover sellers |
referral_stats | Referrals | Referral performance |
campaign_links | Referrals | Referral links |
- Enter edit mode
- Open widget picker dialog
- Widgets filtered by user’s subscription plan
- Select widget to add
- Widget placed at next available position
- Configure via settings panel
- Layout auto-saved
Widgets can be gated by subscription tier (Free < Standard < Pro < Elite). Locked widgets show upgrade prompt.
| Tab | Source | Status |
|---|
| Blogs | /api/blogs (WordPress proxy) | Active |
| Promotions | Static data | Coming Soon |
| Updates | Static data | Coming Soon |
| Videos | Static data | Coming Soon |