216 lines
6.2 KiB
Markdown
216 lines
6.2 KiB
Markdown
# 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 等)
|