# v0 SDK Integration

## Overview

The UI UX section integrates with [v0.dev](https://v0.dev) - Vercel's AI-powered UI generator - to enable rapid prototyping, style exploration, and collaborative design feedback.

## Features

### ✨ AI-Powered Design Generation
- **Natural Language Prompts**: Describe your UI in plain English
- **Style Variations**: Choose from Modern, Minimal, Colorful, Dark, and Glass themes
- **Instant Generation**: Get production-ready React/Next.js code in seconds

### 🎨 Design Gallery
- **Organized Collection**: Browse all generated designs in one place
- **Preview & Stats**: View thumbnails, engagement metrics (views, likes, feedback)
- **Quick Actions**: Share, copy, or open in v0 for further editing

### 🔗 Sharing & Collaboration
- **Shareable Links**: Generate unique URLs for each design
- **Permission Control**: Toggle comments, downloads, and authentication
- **Feedback System**: Collect team comments and suggestions

### 📊 Style Management
- **Multiple Themes**: Experiment with different visual styles
- **Filter by Style**: Quickly find designs matching your aesthetic
- **Consistent Design Language**: Maintain visual coherence across your project

## Technical Implementation

### Installation

The v0 SDK is already installed in the project:

```bash
pnpm add v0-sdk
```

### API Setup

1. Get your API key from [v0.dev/chat/settings/keys](https://v0.dev/chat/settings/keys)
2. Add to your `.env.local`:

```bash
V0_API_KEY=your_api_key_here
```

### Basic Usage

```typescript
import { v0 } from 'v0-sdk'

// Create a new design chat
const chat = await v0.chats.create({
  message: 'Create a responsive navbar with Tailwind CSS',
  system: 'You are an expert React developer',
})

console.log(`Chat created: ${chat.webUrl}`)
```

### Advanced Features

#### Generate with Style Preferences

```typescript
const chat = await v0.chats.create({
  message: 'Create a modern hero section with gradient background',
  system: 'Use Tailwind CSS and create a minimal, clean design',
})
```

#### Iterate on Designs

```typescript
// Continue an existing chat
const updatedChat = await v0.chats.messages.create(chat.id, {
  message: 'Make the gradient more subtle and add a CTA button',
})
```

#### Access Generated Code

```typescript
// Get the latest message with code
const latestMessage = chat.messages[chat.messages.length - 1]
const code = latestMessage.code // Generated React/Next.js component
```

## Integration Points

### Current Implementation

The UI UX page (`/design`) currently uses **mock data** for:
- Design gallery items
- Feedback comments
- Share links
- Style filters

### Next Steps for Full Integration

1. **API Route for v0 Integration** (`/api/v0/generate`)
   ```typescript
   // app/api/v0/generate/route.ts
   import { v0 } from 'v0-sdk'
   
   export async function POST(request: Request) {
     const { prompt, style } = await request.json()
     
     const chat = await v0.chats.create({
       message: prompt,
       system: `Create a ${style} design using React and Tailwind CSS`,
     })
     
     return Response.json({ chatId: chat.id, webUrl: chat.webUrl })
   }
   ```

2. **Database Schema for Designs**
   ```sql
   CREATE TABLE designs (
     id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
     project_id INTEGER REFERENCES projects(id),
     name VARCHAR(255),
     prompt TEXT,
     v0_chat_id VARCHAR(255),
     v0_url TEXT,
     style VARCHAR(50),
     thumbnail_url TEXT,
     code TEXT,
     views INTEGER DEFAULT 0,
     likes INTEGER DEFAULT 0,
     created_at TIMESTAMP DEFAULT NOW(),
     updated_at TIMESTAMP DEFAULT NOW()
   );
   
   CREATE TABLE design_feedback (
     id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
     design_id UUID REFERENCES designs(id),
     user_id INTEGER,
     comment TEXT,
     created_at TIMESTAMP DEFAULT NOW()
   );
   ```

3. **Share Link Generation**
   ```typescript
   // Generate a unique shareable link
   const shareToken = generateSecureToken()
   const shareUrl = `https://vibn.co/share/${shareToken}`
   
   // Store in database with permissions
   await db.query(
     'INSERT INTO share_links (design_id, token, allow_comments, allow_downloads) VALUES ($1, $2, $3, $4)',
     [designId, shareToken, true, true]
   )
   ```

4. **Real-time Feedback**
   - Use WebSockets or Server-Sent Events for live comment updates
   - Integrate with notification system for new feedback

## UI Components

### Design Card
Displays a generated design with:
- Thumbnail preview
- Name and prompt
- Engagement stats (views, likes, feedback count)
- Style badge
- Action buttons (Share, Open in v0, Copy)

### Generator Form
- Textarea for design prompt
- Style selector (Modern, Minimal, Colorful, etc.)
- Generate button with loading state
- Example prompts for inspiration

### Share Modal
- Unique share link with copy button
- Permission toggles (comments, downloads, auth)
- Share to social media options

### Feedback Panel
- List of recent comments
- User avatars and timestamps
- Design reference badges
- Reply functionality

## Best Practices

### Writing Effective Prompts

✅ **Good Prompt:**
```
Create a responsive pricing section with 3 tiers (Starter, Pro, Enterprise). 
Each card should have:
- Plan name and price
- List of 5 features with checkmarks
- A "Get Started" button (primary for Pro tier)
- Hover effect that lifts the card
Use Tailwind CSS and make it modern and clean.
```

❌ **Bad Prompt:**
```
Make a pricing page
```

### Style Consistency

- Use the same style preference across related components
- Document your chosen style in project settings
- Create a style guide based on generated designs

### Feedback Loop

1. Generate initial design
2. Share with team for feedback
3. Iterate based on comments
4. Track versions in design gallery
5. Export final code to your codebase

## Resources

- [v0 SDK Documentation](https://v0-sdk.dev)
- [v0 SDK GitHub](https://github.com/vercel/v0-sdk)
- [v0.dev Platform](https://v0.dev)
- [Example Apps](https://github.com/vercel/v0-sdk/tree/main/examples)

## Future Enhancements

- **Version History**: Track design iterations and allow rollback
- **Component Library**: Extract reusable components from designs
- **A/B Testing**: Compare different style variations
- **Export Options**: Download as React, Vue, or HTML
- **Design Tokens**: Automatically extract colors, spacing, typography
- **Figma Integration**: Sync designs with Figma for designer collaboration
- **Analytics**: Track which designs get the most engagement
- **AI Suggestions**: Recommend improvements based on best practices

