# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Development Commands

**Development server:**
```bash
npm run dev        # Start development server on http://localhost:3000
```

**Build and deployment:**
```bash
npm run build      # Build production application
npm run start      # Start production server
npm run lint       # Run ESLint for code quality checks
```

**Database operations:**
```bash
npm run db:generate    # Generate Prisma client after schema changes
npm run db:push        # Push schema changes to database (development)
npm run db:migrate     # Create and apply migrations (production)
npm run db:studio      # Open Prisma Studio database GUI
npm run db:reset       # Reset database and apply all migrations
```

**Development setup:**
```bash
# First time setup
npm install
chmod +x scripts/setup-db.sh
./scripts/setup-db.sh

# Or use the automated check
node scripts/dev-check.js

# Daily development
npm run dev            # Automatically generates Prisma client and starts dev server
```

## Architecture Overview

This is a **Next.js 15** application with **App Router** using:

- **Authentication**: Supabase Auth with custom UI components
- **Database**: PostgreSQL via Supabase with Prisma ORM
- **Styling**: TailwindCSS v4 with custom theme system
- **State Management**: React Context for auth and theme
- **File Storage**: Configured for Cloudflare R2 (images)
- **Deployment**: Configured for Vercel

### Key Architectural Decisions

1. **Authentication Flow**: Supabase handles auth, middleware manages sessions, useAuth hook provides client state
2. **Database Design**: Prisma schema defines relationships between Users, Prompts, Versions, Tags, Albums, and TestRuns
3. **Theme System**: Custom ThemeProvider with localStorage persistence and system preference detection
4. **Component Structure**: Reusable UI components in `/components/ui/`, layout components in `/components/layout/`

### Core Data Models

The application centers around these main entities:
- **User**: Profile information and authentication
- **Prompt**: AI prompts with versioning and organization features
- **PromptVersion**: Version control for prompt iterations
- **PromptTag**: Categorization system
- **PromptAlbum**: Collection/organization system
- **PromptTestRun**: Testing and validation results

### Environment Setup

Required environment variables:
- `NEXT_PUBLIC_SUPABASE_URL`
- `NEXT_PUBLIC_SUPABASE_ANON_KEY`
- `DATABASE_URL`

### Component Patterns

- Use `'use client'` directive for interactive components
- Theme-aware components should use TailwindCSS dark mode classes
- Authentication state accessed via `useAuth()` hook
- Navigation handled through the Header component with mobile responsiveness

## 项目概况
- Github: Prmbr
- Domain: prmbr.com
- Name: Prmbr - AI Prompt Studio
- Languages Support
  - Chinese
  - English

# 功能清单
- [x] Homepage
- [ ] User Manager
  - [x] Sign in and Sign up
    - [x] username and password
    - [x] email and password
    - [x] google sign in
  - [x] Person Profile Setting
  - [x] Fields
    - [x] Username
    - [x] Password
    - [z] Email
    - [z] Avatar
    - [z] Bio
    - [z] Language
    - [ ] Version Limit (Max By Subscribe)
    - [ ] Credit (Max By Subscribe)
    - [ ] Subscribe Plan (Free, Pro)
- [x] AI Prompt Studio
  - [x] Manager
    - [x] CRUD
    - [x] Search
    - [x] Filter
    - [x] Sort
    - [x] Pagination
    - [x] Bulk Actions
  - [x] DB Fields
    - [x] ID
    - [x] Name
    - [x] Content
    - [x] Album
    - [x] Tag
    - [x] Version
    - [x] Created At
    - [x] Updated At
    - [x] Primissions (Set By User)
      - [x] Private
      - [x] Public
    - [ ] Visibility (Set by admin when User Share)
      - [ ] Under Review
      - [ ] Published
    - [ ] View Count
  - [ ] Prompt Debugger
    - [x] Prompt Version Controll
      - [x] Generate a new version when save
      - [x] Save last [LIMIT] versions
      - [x] [LIMIT] can setting in use profile
      - [ ] [LIMIT] max is by Subscribe
      - [ ] Delete Version Button
    - [ ] Prompt Debugger run
      - [ ] Select AI Model
      - [ ] Input Prompt Content
      - [ ] Show Test Result
      - [ ] Need to User Credit
- [ ] Subscribe
  - [ ] Free
    - [ ] 20 Prompt Limit
    - [ ] 3 Version Each Prompt Limit
    - [ ] 5 USD Credit Once Time. Timeout After 1 Mounth.
    - [ ] 0 USD Credit Every Month.
  - [ ] 19.9 USD Paid Monthly
    - [ ] 500 Prompt Limit
    - [ ] 10 Version Each Prompt Limit
    - [ ] 20 USD Credit Every Month. Valid 1 Month.
- [ ] AI Prompt Showcase
  - [ ] User Can Share
  - [ ] Admin Can Review
  - [ ] Share and Reviewed Prompt Show in Showcase
  - [ ] Everything Can View Showcase
  - [ ] User can Duplicate Prompt from Showcase
- [ ] AI Prompt Share to Public Showcase

# Keyword
- prompt builder
- prompt master builder
- prompt manager builder
- ai prompt builder
- ai prompt studio

# Tech Stack
- Framework: Next.j
- CSS: Tailwind CSS
- DB: Prisma
- DB && Auth: Supabase
- i18n: next-intl
- S3: Cloudflare R2
- Stripe
- AI: OpenRoute

# Deployment
- Vercel/Cloudflare
- Cloudflare R2
- Supabase

#  整体要求
- SSR
- 移动设备友好
- SEO 友好
- 支持夜间模式，采用 Tailwindcss 最佳实践
- 避免采用强制样式，尽量采用全局定义样式，采用 TailwindCSS 最佳实践推荐的样式实现

# 代码生成原则

1. 暂停思考的习惯 - 在行动前先分析现有结构
2. 质量优先的价值观 - 宁可慢一点也要做对
3. 整体设计思维 - 考虑代码的可维护性和一致性
4. 优先按照最佳实践完成工作
5. 完成一个模块后执行 build 查看是否有报错，确保能够成功构建后移除调试代码。
6. 时刻保证布局友好和界面美观

# 模型管理系统

## 支持的服务提供者
- **OpenRouter**: 用于文本生成模型，输出类型为 text
- **Replicate**: 用于多媒体生成模型，支持 image、video、audio 输出类型

## 环境变量配置
- `OPENROUTER_API_KEY`: OpenRouter API 密钥
- `REPLICATE_API_TOKEN`: Replicate API 令牌

## 数据库字段
- `serviceProvider`: 服务提供者 (openrouter/replicate)
- `outputType`: 输出类型 (text/image/video/audio)
- `provider`: 模型提供商 (如 OpenAI, Anthropic 等)
