Dashboard Development
This skill teaches agents how to create dashboard screens following the 3-panel layout architecture used throughout StartupAI.
When to Use
- When implementing dashboard screens
- When creating new dashboard pages
- When following 3-panel layout architecture
- When building React components for dashboards
- When integrating AI Intelligence panels
Core Principle: 3-Panel Layout
All dashboards must use 3-panel layout:
Left Panel = Context (240px) | Main Panel = Work (Flexible) | Right Panel = Intelligence (320px)
WHERE AM I? | WHAT AM I DOING? | HELP ME
Core Model: Context + Work + Intelligence
Panel Responsibilities
Left Panel (Context):
- Primary navigation menu
- Current page context
- Progress indicators
- Quick stats and filters
- Status badges
- Never contains: Forms, primary content, AI insights
Main Panel (Work):
- Primary content and data
- Forms and input fields
- Tables and lists
- Editors and wizards
- Kanban boards
- Primary action buttons
- Never contains: Navigation, AI insights, secondary info
Right Panel (Intelligence):
- AI-generated insights
- Risk alerts and warnings
- Suggested next actions
- AI Coach recommendations
- Explanation of AI reasoning
- Quick action buttons
- Never contains: Data entry forms, primary navigation, main content
Implementation Pattern
Component Structure
Use DashboardLayout wrapper:
import { DashboardLayout } from '@/components/layout/DashboardLayout';
import { AIPanel } from '@/components/dashboard/AIPanel';
export function DashboardPage() {
return (
<DashboardLayout
leftPanel={<Navigation />}
mainPanel={<PrimaryContent />}
aiPanel={<AIPanel />} // or custom Intelligence panel
/>
);
}
Location: src/components/layout/DashboardLayout.tsx
Dashboard Layout Component
Props:
leftPanel— Left panel content (navigation)mainPanel— Main panel content (primary work)aiPanel— Right panel content (AI Intelligence, optional)
Responsive behavior:
- Desktop: All 3 panels visible
- Tablet: Collapsible left panel
- Mobile: Slide-over panels
Left Panel: Context
Navigation Menu
Always include:
- Dashboard link
- Projects link
- Tasks link
- CRM link
- Settings link
- Active page highlighting
Context Indicators
Page-specific context:
- Current section tabs
- Progress indicators
- Completion status
- Quick stats
Quick Links
Related dashboards:
- Links to related pages
- Navigation to connected features
- Breadcrumbs for deep navigation
Main Panel: Work
Content Structure
Section organization:
- Header with title and actions
- Primary content area
- Forms or data tables
- Action buttons
Common patterns:
- Card-based layouts
- Table views with filters
- Form wizards
- Kanban boards
- Timeline views
Forms and Inputs
Use shadcn/ui components:
Input,Textarea,SelectButton,Checkbox,SwitchCard,Tabs,DialogSkeleton,Badge,Progress
Form validation:
- React Hook Form with Zod schemas
- Inline validation
- Error messages
- Loading states
Right Panel: Intelligence
AI Intelligence Components
Common components:
AIPanel— Generic AI insights panel- AI Coach widget
- Risk Radar
- Suggested Actions
- AI Chat interface
AI Insights Display
Show:
- Profile completion recommendations
- Risk alerts
- Next best actions
- AI-generated suggestions
- Strengths and opportunities
Interactive Elements
Action buttons:
- "Auto-improve" actions
- "Generate" suggestions
- "Analyze" features
- Quick action shortcuts
Data Fetching Pattern
React Query Hooks
All data fetching via React Query:
import { useStartup } from '@/hooks/useStartup';
import { useProjects } from '@/hooks/useProjects';
import { useTasks } from '@/hooks/useTasks';
function DashboardPage() {
const { data: startup } = useStartup();
const { data: projects } = useProjects();
const { data: tasks } = useTasks();
// Use data in components
}
Hook locations: src/hooks/use*.ts
Data Flow
Pattern:
Supabase Database → React Query Hooks → Components → UI
Type safety:
- Use generated types:
Tables<'startups'> - Never define types manually
- Type-safe queries and mutations
Routing Pattern
React Router Setup
HashRouter for static hosting:
import { HashRouter, Routes, Route } from 'react-router-dom';
<HashRouter>
<Routes>
<Route element={<DashboardLayout />}>
<Route path="/dashboard" element={<DashboardPage />} />
<Route path="/profile" element={<ProfilePage />} />
</Route>
</Routes>
</HashRouter>
Route locations: src/pages/*.tsx
Styling Pattern
Tailwind CSS Only
No CDN Tailwind:
- ❌
https://cdn.tailwindcss.com(forbidden) - ✅ PostCSS + Tailwind (via
tailwind.config.js)
Custom theme colors:
sage,warm,aicolor palettes- Premium shadows:
shadow-premium-sm/md/lg/xl
Component styling:
- shadcn/ui patterns
- Tailwind utility classes
- Custom theme via
tailwind.config.ts
Dashboard Pages in This Project
Main Dashboard (/dashboard)
Purpose: Command center, overview, KPIs
Status: ✅ Complete (100%)
3-Panel: ✅ Full implementation
Components:
- KPI bar (MRR, users, customers, team size)
- Task list (today's priorities)
- Project list (active projects)
- Deals pipeline
- AI Panel (insights, suggestions, chat)
User Profile (/profile)
Purpose: Personal identity management
Status: 🔴 Missing (prompt created, needs implementation)
3-Panel: ❌ Not started
Expected structure:
- Left: Profile navigation, completion indicator
- Main: Profile form (personal info, preferences, security)
- Right: Profile completion recommendations, AI suggestions
Company Profile (/company-profile)
Purpose: Company profile management, source of truth
Status: 🔴 Missing (prompt created, needs implementation)
3-Panel: ❌ Not started
Expected structure:
- Left: Profile navigation, completion indicator
- Main: Profile form (overview, business, social, traction, team)
- Right: AI Profile Coach (strengths, risks/gaps, auto-improve)
Best Practices
✅ DO
- Always use 3-panel layout (
DashboardLayout) - Place navigation in left panel
- Put primary content in main panel
- Include AI Intelligence in right panel
- Use React Query for all data fetching
- Use generated types from Supabase
- Follow shadcn/ui component patterns
- Use Tailwind CSS for styling
❌ DON'T
- Don't skip 3-panel layout
- Don't put forms in left or right panels
- Don't put navigation in main or right panels
- Don't put AI insights in main panel
- Don't fetch data directly (use React Query hooks)
- Don't define types manually (generate from schema)
- Don't use CDN Tailwind (use PostCSS)
Reference
- 3-Panel Architecture:
prompts/dashboard/02-three-panel-layout-architecture.md - Dashboard Screen Design:
prompts/dashboard/03-dashboard-screen-design.md - User Profile Prompt:
prompts/dashboard/27-user-profile.md - Company Profile Prompt:
prompts/dashboard/28-company-profile.md - Progress Tracker:
prompts/dashboard/00-dash-progress.md - React/Vite Rules:
.cursor/rules/react-vite.mdc
Created: 2025-01-16
Based on: 3-panel dashboard architecture
Version: 1.0.0