=== NEW === - studio/ — MCPEngine Studio scaffold (Next.js monorepo, build plan) - docs/FACTORY-V2.md — Factory v2 architecture doc - docs/CALENDLY_MCP_BUILD_SUMMARY.md — Calendly MCP build report === UPDATED SERVERS === - fieldedge: Added jobs-tools, UI build script, main entry update - lightspeed: Updated main + server entry points - squarespace: Added collection-browser + page-manager apps - toast: Added main + server entry points === INFRA === - infra/command-center/state.json — Updated pipeline state - infra/command-center/FACTORY-V2.md — Factory v2 operator playbook
572 lines
29 KiB
Markdown
572 lines
29 KiB
Markdown
# MCPEngine Studio — UX/UI Design Specification
|
|
|
|
**Version:** 1.0 | **Date:** February 2026 | **Status:** Design-Ready
|
|
|
|
---
|
|
|
|
## 1. Design System Foundations
|
|
|
|
### 1.1 Color System
|
|
|
|
**Primary Palette (Dark Mode Default)**
|
|
```
|
|
--surface-0: #0A0F1E // App background (deepest)
|
|
--surface-1: #111827 // Card/panel background (gray-900)
|
|
--surface-2: #1F2937 // Elevated surface (gray-800)
|
|
--surface-3: #374151 // Hover/active states (gray-700)
|
|
--border: #374151 // Default border (gray-700)
|
|
--border-subtle: #1F2937 // Subtle dividers (gray-800)
|
|
```
|
|
|
|
**Brand Colors**
|
|
```
|
|
--brand-primary: #6366F1 // Indigo-500 — primary actions
|
|
--brand-primary-hover: #818CF8 // Indigo-400
|
|
--brand-accent: #10B981 // Emerald-500 — success/deploy
|
|
--brand-accent-hover: #34D399 // Emerald-400
|
|
--brand-glow: #6366F1/20 // Indigo glow for focus rings
|
|
```
|
|
|
|
**Text Colors**
|
|
```
|
|
--text-primary: #F9FAFB // gray-50 — headings, primary content
|
|
--text-secondary: #9CA3AF // gray-400 — descriptions, labels
|
|
--text-tertiary: #6B7280 // gray-500 — placeholders, disabled
|
|
--text-inverse: #111827 // gray-900 — on light backgrounds
|
|
```
|
|
|
|
**Semantic Colors**
|
|
```
|
|
--success: #10B981 // Emerald-500
|
|
--warning: #F59E0B // Amber-500
|
|
--error: #EF4444 // Red-500
|
|
--info: #3B82F6 // Blue-500
|
|
```
|
|
|
|
**Light Mode Overrides**
|
|
```
|
|
--surface-0: #FFFFFF
|
|
--surface-1: #F9FAFB // gray-50
|
|
--surface-2: #F3F4F6 // gray-100
|
|
--surface-3: #E5E7EB // gray-200
|
|
--border: #D1D5DB // gray-300
|
|
--text-primary: #111827 // gray-900
|
|
--text-secondary: #6B7280 // gray-500
|
|
```
|
|
|
|
### 1.2 Typography
|
|
|
|
**Font Stack**
|
|
- **UI:** Inter (Variable) — `font-family: 'Inter Variable', system-ui, sans-serif`
|
|
- **Code:** JetBrains Mono — `font-family: 'JetBrains Mono', monospace`
|
|
- **Marketing/Headlines:** Inter with `font-feature-settings: 'ss01', 'ss02'`
|
|
|
|
**Scale**
|
|
| Token | Size | Line Height | Weight | Usage |
|
|
|-------|------|------------|--------|-------|
|
|
| `text-xs` | 12px | 16px | 400 | Badges, captions |
|
|
| `text-sm` | 14px | 20px | 400 | Labels, secondary text |
|
|
| `text-base` | 16px | 24px | 400 | Body text, inputs |
|
|
| `text-lg` | 18px | 28px | 500 | Section titles |
|
|
| `text-xl` | 20px | 28px | 600 | Page subtitles |
|
|
| `text-2xl` | 24px | 32px | 700 | Page titles |
|
|
| `text-3xl` | 30px | 36px | 700 | Hero headlines |
|
|
| `text-4xl` | 36px | 40px | 800 | Landing hero |
|
|
| `text-5xl` | 48px | 48px | 800 | Marketing hero |
|
|
|
|
### 1.3 Spacing
|
|
|
|
4px base grid. Tailwind spacing scale:
|
|
```
|
|
space-0.5: 2px space-6: 24px space-16: 64px
|
|
space-1: 4px space-8: 32px space-20: 80px
|
|
space-2: 8px space-10: 40px space-24: 96px
|
|
space-3: 12px space-12: 48px space-32: 128px
|
|
space-4: 16px space-14: 56px
|
|
```
|
|
|
|
**Component Spacing Rules:**
|
|
- Card padding: `p-6` (24px)
|
|
- Section gaps: `gap-8` (32px)
|
|
- Inline element gaps: `gap-2` (8px) or `gap-3` (12px)
|
|
- Page margins: `px-6` on desktop, `px-4` on mobile
|
|
|
|
### 1.4 Elevation / Shadows
|
|
|
|
```css
|
|
--shadow-sm: 0 1px 2px rgba(0,0,0,0.3);
|
|
--shadow-md: 0 4px 6px -1px rgba(0,0,0,0.4);
|
|
--shadow-lg: 0 10px 15px -3px rgba(0,0,0,0.5);
|
|
--shadow-xl: 0 20px 25px -5px rgba(0,0,0,0.5);
|
|
--shadow-glow: 0 0 20px rgba(99,102,241,0.15); /* brand glow */
|
|
--shadow-success-glow: 0 0 20px rgba(16,185,129,0.15);
|
|
```
|
|
|
|
### 1.5 Border Radius
|
|
```
|
|
--radius-sm: 6px (rounded-md)
|
|
--radius-md: 8px (rounded-lg)
|
|
--radius-lg: 12px (rounded-xl)
|
|
--radius-xl: 16px (rounded-2xl)
|
|
--radius-full: 9999px (rounded-full) — pills, avatars
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Component Library
|
|
|
|
### 2.1 Button
|
|
|
|
```
|
|
┌─ Primary ────────────────────────────────────┐
|
|
│ bg-indigo-500 hover:bg-indigo-400 │
|
|
│ text-white font-semibold │
|
|
│ Sizes: sm(h-8 px-3 text-sm) │
|
|
│ md(h-10 px-4 text-sm) │
|
|
│ lg(h-12 px-6 text-base) │
|
|
│ Rounded: rounded-lg │
|
|
│ Focus: ring-2 ring-indigo-500/50 ring-offset-2 ring-offset-gray-900 │
|
|
└──────────────────────────────────────────────┘
|
|
|
|
Variants:
|
|
- Primary: bg-indigo-500 text-white
|
|
- Secondary: bg-gray-700 text-gray-200 border border-gray-600
|
|
- Ghost: bg-transparent text-gray-400 hover:bg-gray-800
|
|
- Danger: bg-red-500/10 text-red-400 hover:bg-red-500/20
|
|
- Success: bg-emerald-500 text-white (deploy button)
|
|
```
|
|
|
|
### 2.2 Card
|
|
|
|
```
|
|
bg-gray-900 border border-gray-700 rounded-xl p-6
|
|
hover: border-gray-600 shadow-md transition-all duration-150
|
|
|
|
Variants:
|
|
- Default: as above
|
|
- Interactive: + hover:scale-[1.02] cursor-pointer
|
|
- Elevated: + shadow-lg bg-gray-800
|
|
- Glowing: + shadow-glow border-indigo-500/30 (featured/active)
|
|
```
|
|
|
|
### 2.3 Input
|
|
|
|
```
|
|
bg-gray-800 border border-gray-600 rounded-lg px-4 h-10
|
|
text-gray-100 placeholder:text-gray-500
|
|
focus: border-indigo-500 ring-2 ring-indigo-500/20
|
|
error: border-red-500 ring-2 ring-red-500/20
|
|
|
|
Variants:
|
|
- Text input (default)
|
|
- Textarea: h-auto min-h-[80px] py-3
|
|
- Select: + chevron icon right
|
|
- Search: + magnifying glass icon left, rounded-full
|
|
```
|
|
|
|
### 2.4 Canvas Node (React Flow Tool Block)
|
|
|
|
```
|
|
┌──────────────────────────────────┐
|
|
│ ○ GET get_contacts │ ← Handle (connection point)
|
|
│ │
|
|
│ Retrieve contacts from CRM │ ← Description (text-sm text-gray-400)
|
|
│ │
|
|
│ ┌────────┐ ┌────────┐ ┌──────┐ │
|
|
│ │ 3 params│ │ Auth ✓ │ │ Live │ │ ← Badges
|
|
│ └────────┘ └────────┘ └──────┘ │
|
|
└──────────────────────────────────┘
|
|
|
|
Style: bg-gray-800 border border-gray-600 rounded-xl p-4 w-[280px]
|
|
Selected: border-indigo-500 shadow-glow
|
|
Disabled: opacity-50
|
|
Group header: bg-gray-700/50 text-xs uppercase text-gray-400 px-3 py-1
|
|
```
|
|
|
|
### 2.5 Toast
|
|
|
|
```
|
|
Position: bottom-right, stack up
|
|
Style: bg-gray-800 border border-gray-700 rounded-lg shadow-xl p-4
|
|
max-w-sm flex items-start gap-3
|
|
|
|
Variants:
|
|
- Success: left border-l-4 border-l-emerald-500, emerald icon
|
|
- Error: left border-l-4 border-l-red-500, red icon
|
|
- Info: left border-l-4 border-l-blue-500, blue icon
|
|
- Loading: left border-l-4 border-l-indigo-500, spinner icon
|
|
|
|
Auto-dismiss: 5s (success/info), manual (error)
|
|
Animation: slide in from right (200ms ease-out), fade out
|
|
```
|
|
|
|
### 2.6 Modal
|
|
|
|
```
|
|
Backdrop: bg-black/60 backdrop-blur-sm
|
|
Container: bg-gray-900 border border-gray-700 rounded-2xl shadow-2xl
|
|
max-w-lg w-full mx-4 p-6
|
|
Header: text-xl font-semibold + close button (top right)
|
|
Footer: flex justify-end gap-3 pt-4 border-t border-gray-800
|
|
Animation: backdrop fade-in 150ms, modal scale-in from 95% (200ms spring)
|
|
```
|
|
|
|
### 2.7 Nav Rail Item
|
|
|
|
```
|
|
Width: 64px total rail
|
|
Item: w-10 h-10 rounded-lg flex items-center justify-center
|
|
text-gray-400 hover:text-gray-200 hover:bg-gray-800
|
|
Active: text-indigo-400 bg-indigo-500/10
|
|
Tooltip: right side, bg-gray-800 text-sm rounded-md px-2 py-1 (200ms delay)
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Page Wireframes
|
|
|
|
### 3.1 Landing Page
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ [Logo] Features Pricing Docs Templates [Sign In] [CTA] │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ Build MCP Servers Visually. │ ← text-5xl font-extrabold
|
|
│ Ship AI Apps Instantly. │ gradient text (indigo→emerald)
|
|
│ │
|
|
│ 37 templates. Drag-and-drop. Zero boilerplate. │ ← text-xl text-gray-400
|
|
│ From idea to deployed server in 60 seconds. │
|
|
│ │
|
|
│ [Get Started Free] [Watch Demo ▶] │ ← Primary + Ghost buttons
|
|
│ │
|
|
│ ┌─────────────────────────────────────────┐ │
|
|
│ │ Live demo / product video │ │ ← 16:9 rounded-2xl border
|
|
│ │ (auto-playing, muted) │ │ shadow-2xl
|
|
│ └─────────────────────────────────────────┘ │
|
|
│ │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
│ │ Upload │ │ Customize│ │ Deploy │ │ ← 3 value prop cards
|
|
│ │ Any Spec │ │ Visually │ │ Anywhere │ │ with icons + descriptions
|
|
│ └──────────┘ └──────────┘ └──────────┘ │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ "Trusted by" logos (if applicable) or │
|
|
│ "Built on" — Anthropic, Cloudflare, MCP Protocol │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ Template Showcase — grid of 6 featured servers │
|
|
│ [Browse All 37 Templates →] │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ Pricing Section (4 tier cards) │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ Final CTA: "Ready to build?" + email capture │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
### 3.2 Dashboard
|
|
|
|
```
|
|
┌────┬──────────────────────────────────────────────────────┐
|
|
│ │ My Projects [+ New Project] │
|
|
│ N │ │
|
|
│ A │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │
|
|
│ V │ │ Trello │ │ Zendesk │ │ Custom │ │ + New │ │
|
|
│ │ │ MCP │ │ MCP │ │ CRM MCP │ │ │ │
|
|
│ R │ │ ✅ Live │ │ 🧪 Test │ │ 📝 Draft│ │ │ │
|
|
│ A │ │ 12 tools │ │ 8 tools │ │ 0 tools │ │ │ │
|
|
│ I │ └──────────┘ └──────────┘ └──────────┘ └────────┘ │
|
|
│ L │ │
|
|
│ │ Recent Activity │
|
|
│ │ · Deployed trello-mcp v1.2 2 hours ago │
|
|
│ │ · Tests passed for zendesk-mcp 5 hours ago │
|
|
│ │ · Created custom-crm project 1 day ago │
|
|
│ │ │
|
|
│ │ Quick Actions │
|
|
│ │ [Upload Spec] [Browse Templates] [View Docs] │
|
|
└────┴──────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
### 3.3 Tool Editor (Core Screen)
|
|
|
|
```
|
|
┌────┬──────────────────────────────────────┬──────────────┐
|
|
│ │ trello-mcp [Analyze] [Test] [Deploy]│ │
|
|
│ N ├──────────────────────────────────────┤ Inspector │
|
|
│ A │ │ │
|
|
│ V │ ┌──────────┐ ┌──────────┐ │ Tool Config │
|
|
│ │ │get_boards│──▶│get_cards │ │ ────────── │
|
|
│ R │ └──────────┘ └──────────┘ │ Name: │
|
|
│ A │ │ [get_boards]│
|
|
│ I │ ┌──────────┐ ┌──────────┐ │ │
|
|
│ L │ │create_ │ │update_ │ │ Description:│
|
|
│ │ │card │ │card │ │ [Fetch all │
|
|
│ │ └──────────┘ └──────────┘ │ boards...] │
|
|
│ │ │ │
|
|
│ │ ┌──────────┐ │ Parameters: │
|
|
│ │ │delete_ │ │ ┌─────────┐│
|
|
│ │ │card │ │ │board_id ││
|
|
│ │ └──────────┘ │ │string ││
|
|
│ │ │ │required ││
|
|
│ │ [+ Add Tool] Zoom: [- 100% +] │ └─────────┘│
|
|
│ │ │ [+ Add Param]│
|
|
└────┴──────────────────────────────────────┴──────────────┘
|
|
```
|
|
|
|
### 3.4 MCP App Designer
|
|
|
|
```
|
|
┌────┬────────────┬──────────────────────┬──────────────┐
|
|
│ │ Components │ Preview │ Properties │
|
|
│ N │ │ │ │
|
|
│ A │ ┌────────┐ │ ┌────────────────┐ │ Widget: │
|
|
│ V │ │ Table │ │ │ Contact Grid │ │ Data Grid │
|
|
│ │ ├────────┤ │ │ ┌──┬──┬──┬──┐ │ │ │
|
|
│ R │ │ Chart │ │ │ │Na│Em│Ph│St│ │ │ Data Source:│
|
|
│ A │ ├────────┤ │ │ ├──┼──┼──┼──┤ │ │ [get_contac]│
|
|
│ I │ │ Form │ │ │ │ │ │ │ │ │ │ │
|
|
│ L │ ├────────┤ │ │ ├──┼──┼──┼──┤ │ │ Columns: │
|
|
│ │ │ Card │ │ │ │ │ │ │ │ │ │ ☑ name │
|
|
│ │ ├────────┤ │ │ └──┴──┴──┴──┘ │ │ ☑ email │
|
|
│ │ │ Stats │ │ │ │ │ ☑ phone │
|
|
│ │ ├────────┤ │ │ [Refresh Data] │ │ ☐ address │
|
|
│ │ │ Map │ │ └────────────────┘ │ │
|
|
│ │ └────────┘ │ │ Pagination: │
|
|
│ │ │ Preview as: │ [25] per page│
|
|
│ │ │ [Claude][ChatGPT] │ │
|
|
└────┴────────────┴──────────────────────┴──────────────┘
|
|
```
|
|
|
|
### 3.5 Deploy Screen
|
|
|
|
```
|
|
┌────┬──────────────────────────────────────────────────────┐
|
|
│ │ Deploy trello-mcp │
|
|
│ N │ │
|
|
│ A │ Target: [MCPEngine ▾] [npm] [Docker] [Download] │
|
|
│ V │ │
|
|
│ │ ┌─────────────────────────────────────────────────┐ │
|
|
│ R │ │ Step 1: Build ████████████████ Done ✓ │ │
|
|
│ A │ │ Step 2: Test ████████████████ Done ✓ │ │
|
|
│ I │ │ Step 3: Package ████████░░░░░░░ 60% │ │
|
|
│ L │ │ Step 4: Deploy ░░░░░░░░░░░░░░ Waiting │ │
|
|
│ │ │ Step 5: Verify ░░░░░░░░░░░░░░ Waiting │ │
|
|
│ │ └─────────────────────────────────────────────────┘ │
|
|
│ │ │
|
|
│ │ Live Logs: │
|
|
│ │ ┌─────────────────────────────────────────────────┐ │
|
|
│ │ │ ▸ Compiling TypeScript... │ │
|
|
│ │ │ ▸ Bundling for Cloudflare Workers... │ │
|
|
│ │ │ ▸ Uploading bundle (24KB)... │ │
|
|
│ │ └─────────────────────────────────────────────────┘ │
|
|
│ │ │
|
|
│ │ Your server will be live at: │
|
|
│ │ https://trello.mcpengine.run │
|
|
└────┴──────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
### 3.6 Marketplace
|
|
|
|
```
|
|
┌────┬──────────────────────────────────────────────────────┐
|
|
│ │ Templates [Search... 🔍] │
|
|
│ N │ │
|
|
│ A │ [All] [CRM] [eCommerce] [HR] [Marketing] [Support] │
|
|
│ V │ │
|
|
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
│ R │ │ ⭐ │ │ │ │ │ │
|
|
│ A │ │ Trello │ │ Zendesk │ │ Mailchimp│ │
|
|
│ I │ │ 12 tools │ │ 15 tools │ │ 8 tools │ │
|
|
│ L │ │ 3 apps │ │ 4 apps │ │ 2 apps │ │
|
|
│ │ │ ★★★★★ │ │ ★★★★☆ │ │ ★★★★★ │ │
|
|
│ │ │ [Fork] │ │ [Fork] │ │ [Fork] │ │
|
|
│ │ └──────────┘ └──────────┘ └──────────┘ │
|
|
│ │ │
|
|
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
│ │ │ Stripe │ │ HubSpot │ │ Shopify │ │
|
|
│ │ │ ... │ │ ... │ │ ... │ │
|
|
│ │ └──────────┘ └──────────┘ └──────────┘ │
|
|
└────┴──────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 4. User Flow: 60-Second First Server
|
|
|
|
```
|
|
[Sign Up / Sign In]
|
|
│
|
|
▼
|
|
┌─────────────────────────────┐
|
|
│ "Build your first server" │ ← Full-screen welcome, no sidebar
|
|
│ │
|
|
│ Paste an OpenAPI spec URL │
|
|
│ ┌───────────────────────┐ │
|
|
│ │ https://api.trello... │ │ ← Auto-focused input
|
|
│ └───────────────────────┘ │
|
|
│ │
|
|
│ Or: [Upload File] [Pick a Template] │
|
|
└──────────────┬──────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────┐
|
|
│ Analyzing... │ ← Animated progress
|
|
│ ████████████░░░░ 75% │ Each tool appears as a card
|
|
│ │ as it's discovered
|
|
│ Found: get_boards ✓ │
|
|
│ Found: get_cards ✓ │
|
|
│ Found: create_card ✓ │
|
|
│ Finding more... │
|
|
└──────────────┬──────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────┐
|
|
│ Found 12 tools! │ ← Tool editor with tools pre-loaded
|
|
│ [Review & Customize] │ User can toggle, rename, tweak
|
|
│ or [Deploy Now →] │ ← Skip to deploy for speed
|
|
└──────────────┬──────────────┘
|
|
│ (click Deploy Now)
|
|
▼
|
|
┌─────────────────────────────┐
|
|
│ Deploying to MCPEngine... │ ← Progress stepper
|
|
│ ████████████████████ 100% │
|
|
│ │
|
|
│ 🎉 Your server is LIVE! │ ← CONFETTI BURST
|
|
│ │ Screen shakes slightly
|
|
│ https://trello.mcpengine.run │ Glow animation on URL
|
|
│ │
|
|
│ [Copy URL] [Open Dashboard]│
|
|
│ [Add to Claude Desktop] │ ← Deep link / config snippet
|
|
└─────────────────────────────┘
|
|
|
|
Total time: ~60 seconds
|
|
```
|
|
|
|
---
|
|
|
|
## 5. Animation & Micro-Interaction Spec
|
|
|
|
| Element | Trigger | Animation | Duration | Easing |
|
|
|---------|---------|-----------|----------|--------|
|
|
| Page transition | Route change | Fade + slide up 8px | 150ms | ease-out |
|
|
| Modal open | Click | Backdrop fade + modal scale from 95% | 200ms | spring(1, 80, 10) |
|
|
| Modal close | Click/Esc | Reverse of open | 150ms | ease-in |
|
|
| Toast enter | Event | Slide in from right | 200ms | ease-out |
|
|
| Toast exit | Auto/click | Fade out + slide right | 150ms | ease-in |
|
|
| Canvas zoom | Scroll/pinch | Smooth interpolation | 200ms | ease-out |
|
|
| Tool node hover | Hover | Scale to 1.02, shadow-md | 150ms | ease-out |
|
|
| Tool node select | Click | Border glow (indigo), shadow-glow | 200ms | ease-out |
|
|
| Inspector open | Node select | Slide in from right | 200ms | ease-out |
|
|
| Inspector close | Deselect | Slide out right | 150ms | ease-in |
|
|
| Deploy confetti | Deploy success | Canvas confetti burst (200 particles) | 3s | physics-based |
|
|
| Deploy glow | Deploy success | URL pulsing glow | 2s loop | ease-in-out |
|
|
| Button press | Click | Scale to 0.97, then back | 100ms | ease-out |
|
|
| Input focus | Focus | Border color transition + ring expand | 150ms | ease-out |
|
|
| Loading spinner | Async op | Rotate 360° | 1s loop | linear |
|
|
| Skeleton pulse | Loading state | Opacity 0.5 → 1 → 0.5 | 1.5s loop | ease-in-out |
|
|
| Tool discovered | Analysis | Slide up + fade in from bottom | 300ms | spring |
|
|
| Progress bar | Generation | Width transition | 100ms | linear |
|
|
|
|
### Deploy Confetti Spec
|
|
```typescript
|
|
// Using canvas-confetti library
|
|
confetti({
|
|
particleCount: 200,
|
|
spread: 90,
|
|
origin: { y: 0.6 },
|
|
colors: ['#6366F1', '#10B981', '#F59E0B', '#EF4444', '#3B82F6'],
|
|
gravity: 1.2,
|
|
scalar: 1.1,
|
|
ticks: 150,
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
## 6. States
|
|
|
|
### Empty States
|
|
| Screen | Illustration | Headline | CTA |
|
|
|--------|-------------|----------|-----|
|
|
| Dashboard (no projects) | Rocket illustration | "Launch your first MCP server" | [Create Project] or [Browse Templates] |
|
|
| Tool Editor (no tools) | Magnifying glass | "Upload a spec to discover tools" | [Upload Spec] |
|
|
| App Designer (no apps) | Paint palette | "Design your first app" | [Add Component] |
|
|
| Marketplace (no results) | Empty box | "No templates match your search" | [Clear Filters] |
|
|
| Test Dashboard (no tests) | Clipboard | "Run tests to see results" | [Run All Tests] |
|
|
|
|
### Loading States
|
|
- **Skeleton screens** for all list/grid views (pulsing gray-700/gray-800 blocks)
|
|
- **Inline spinners** for button actions (replace button text with spinner)
|
|
- **Progress bars** for multi-step operations (analysis, generation, deploy)
|
|
- **Streaming text** for AI generation (typewriter effect, 30ms per character)
|
|
|
|
### Error States
|
|
- **Inline errors:** Red border + error message below input
|
|
- **Toast errors:** For async failures (API errors, deploy failures)
|
|
- **Full-page errors:** 404, 500 with illustration + retry button
|
|
- **Recoverable:** Yellow warning banner with "Retry" action
|
|
- **Generation failures:** Show partial results + "Continue from here" option
|
|
|
|
---
|
|
|
|
## 7. Accessibility
|
|
|
|
### Requirements (WCAG 2.1 AA)
|
|
- **Color contrast:** 4.5:1 minimum for text, 3:1 for large text and UI components
|
|
- **Focus indicators:** 2px indigo ring with 2px offset on all interactive elements
|
|
- **Keyboard navigation:** Full tab order through all UI, Escape closes modals/inspectors
|
|
- **Screen readers:** All images have alt text, all interactive elements have aria-labels
|
|
- **Reduced motion:** `prefers-reduced-motion` disables confetti, reduces transitions to opacity-only
|
|
- **Canvas accessibility:** React Flow nodes are tabbable with arrow key navigation
|
|
- **Touch targets:** Minimum 44x44px for all interactive elements
|
|
|
|
### Focus Ring Spec
|
|
```css
|
|
.focus-visible {
|
|
outline: 2px solid #6366F1;
|
|
outline-offset: 2px;
|
|
}
|
|
/* On dark surfaces */
|
|
.dark .focus-visible {
|
|
outline-color: #818CF8;
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 8. Responsive Strategy
|
|
|
|
**Desktop-first** (primary target: 1280px+)
|
|
|
|
| Breakpoint | Layout Change |
|
|
|-----------|---------------|
|
|
| `≥1280px` (xl) | Full layout: NavRail + Canvas + Inspector |
|
|
| `1024-1279px` (lg) | Inspector becomes overlay (toggle) |
|
|
| `768-1023px` (md) | NavRail collapses to icons, Inspector is modal |
|
|
| `<768px` (sm) | Mobile: bottom tab bar, full-screen views, no canvas editor |
|
|
|
|
**Mobile (sm):** Dashboard and Marketplace work. Editor and App Designer show "Open on desktop for the full experience" with limited read-only preview.
|
|
|
|
---
|
|
|
|
## 9. Icon System
|
|
|
|
- **Library:** Lucide Icons (consistent, MIT licensed, works with React)
|
|
- **Size:** 16px (inline), 20px (buttons/nav), 24px (feature icons), 32px (empty states)
|
|
- **Style:** Stroke weight 1.5px, consistent with Inter's visual weight
|
|
- **Custom icons:** MCP logo, MCPEngine logo, deploy/rocket, tool/wrench
|
|
|
|
### Nav Rail Icons
|
|
| Icon | Label | Lucide Icon |
|
|
|------|-------|-------------|
|
|
| Home | Dashboard | `LayoutDashboard` |
|
|
| Edit | Editor | `Workflow` |
|
|
| Palette | App Designer | `Palette` |
|
|
| Flask | Testing | `FlaskConical` |
|
|
| Rocket | Deploy | `Rocket` |
|
|
| Store | Marketplace | `Store` |
|
|
| Settings | Settings | `Settings` |
|
|
|
|
---
|
|
|
|
*Document Version: 1.0 | Last Updated: February 6, 2026*
|