{"owner":"f","repo":"prompts.chat","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md","CLAUDE.md"],"skills":{"AGENTS.md":"# AGENTS.md\n\n> Guidelines for AI coding agents working on this project.\n\n## Project Overview\n\n**prompts.chat** is a social platform for AI prompts built with Next.js 16. It allows users to share, discover, and collect prompts from the community. The project is open source and can be self-hosted with customizable branding, themes, and authentication.\n\n### Tech Stack\n\n- **Framework:** Next.js 16.0.7 (App Router) with React 19.2\n- **Language:** TypeScript 5\n- **Database:** PostgreSQL with Prisma ORM 6.19\n- **Authentication:** NextAuth.js 5 (beta) with pluggable providers (credentials, GitHub, Google, Azure)\n- **Styling:** Tailwind CSS 4 with Radix UI primitives\n- **UI Components:** shadcn/ui pattern (components in `src/components/ui/`)\n- **Internationalization:** next-intl with 11 supported locales\n- **Icons:** Lucide React\n- **Forms:** React Hook Form with Zod validation\n\n## Project Structure\n\n```\n/\n├── prisma/                 # Database schema and migrations\n│   ├── schema.prisma       # Prisma schema definition\n│   ├── migrations/         # Database migrations\n│   └── seed.ts             # Database seeding script\n├── public/                 # Static assets (logos, favicon)\n├── messages/               # i18n translation files (en.json, es.json, etc.)\n├── src/\n│   ├── app/                # Next.js App Router pages\n│   │   ├── (auth)/         # Auth pages (login, register)\n│   │   ├── [username]/     # User profile pages\n│   │   ├── admin/          # Admin dashboard\n│   │   ├── api/            # API routes\n│   │   ├── categories/     # Category pages\n│   │   ├── prompts/        # Prompt CRUD pages\n│   │   ├── feed/           # User feed\n│   │   ├── discover/       # Discovery page\n│   │   ├── settings/       # User settings\n│   │   └── tags/           # Tag pages\n│   ├── components/         # React components\n│   │   ├── admin/          # Admin-specific components\n│   │   ├── auth/           # Authentication components\n│   │   ├── categories/     # Category components\n│   │   ├── layout/         # Layout components (header, etc.)\n│   │   ├── prompts/        # Prompt-related components\n│   │   ├── providers/      # React context providers\n│   │   ├── settings/       # Settings components\n│   │   └── ui/             # shadcn/ui base components\n│   ├── lib/                # Utility libraries\n│   │   ├── ai/             # AI/OpenAI integration\n│   │   ├── auth/           # NextAuth configuration\n│   │   ├── config/         # Config type definitions\n│   │   ├── i18n/           # Internationalization setup\n│   │   ├── plugins/        # Plugin system (auth, storage)\n│   │   ├── db.ts           # Prisma client instance\n│   │   └── utils.ts        # Utility functions (cn)\n│   └── i18n/               # i18n request handler\n├── prompts.config.ts       # Main application configuration\n├── prompts.csv             # Community prompts data source\n└── package.json            # Dependencies and scripts\n```\n\n## Commands\n\n```bash\n# Development\nnpm run dev              # Start development server (localhost:3000)\nnpm run build            # Build for production (runs prisma generate first)\nnpm run start            # Start production server\nnpm run lint             # Run ESLint\n\n# Database\nnpm run db:generate      # Generate Prisma client\nnpm run db:migrate       # Run database migrations\nnpm run db:push          # Push schema changes to database\nnpm run db:studio        # Open Prisma Studio\nnpm run db:seed          # Seed database with initial data\n\n# Type checking\nnpx tsc --noEmit         # Check TypeScript types without emitting\n\n# Translations\nnode scripts/check-translations.js  # Check for missing translations across locales\n```\n\n## Code Style Guidelines\n\n### TypeScript\n\n- Use TypeScript strict mode\n- Prefer explicit types over `any`\n- Use `interface` for object shapes, `type` for unions/intersections\n- Functions: `camelCase` (e.g., `getUserData`, `handleSubmit`)\n- Components: `PascalCase` (e.g., `PromptCard`, `AuthContent`)\n- Constants: `UPPER_SNAKE_CASE` for true constants\n- Files: `kebab-case.tsx` for components, `camelCase.ts` for utilities\n\n### React/Next.js\n\n- Use React Server Components by default\n- Add `\"use client\"` directive only when client interactivity is needed\n- Prefer server actions over API routes for mutations\n- Use `next-intl` for all user-facing strings (never hardcode text)\n- Import translations with `useTranslations()` or `getTranslations()`\n\n### Component Pattern\n\n```tsx\n// Client component example\n\"use client\";\n\nimport { useTranslations } from \"next-intl\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface MyComponentProps {\n  title: string;\n  onAction: () => void;\n}\n\nexport function MyComponent({ title, onAction }: MyComponentProps) {\n  const t = useTranslations(\"namespace\");\n  \n  return (\n    <div className=\"space-y-4\">\n      <h2 className=\"text-lg font-semibold\">{title}</h2>\n      <Button onClick={onAction}>{t(\"actionLabel\")}</Button>\n    </div>\n  );\n}\n```\n\n### Styling\n\n- Use Tailwind CSS utility classes\n- Follow mobile-first responsive design (`sm:`, `md:`, `lg:` breakpoints)\n- Use `cn()` utility from `@/lib/utils` for conditional classes\n- Prefer Radix UI primitives via shadcn/ui components\n- Keep component styling scoped and composable\n\n### Database\n\n- Use Prisma Client from `@/lib/db`\n- Always include proper `select` or `include` for relations\n- Use transactions for multi-step operations\n- Add indexes for frequently queried fields\n\n## Configuration\n\nThe main configuration file is `prompts.config.ts`:\n\n- **branding:** Logo, name, and description\n- **theme:** Colors, border radius, UI variant\n- **auth:** Authentication providers array (credentials, github, google, azure)\n- **i18n:** Supported locales and default locale\n- **features:** Feature flags (privatePrompts, changeRequests, categories, tags, aiSearch)\n- **homepage:** Homepage customization and sponsors\n\n## Plugin System\n\nAuthentication and storage use a plugin architecture:\n\n### Auth Plugins (`src/lib/plugins/auth/`)\n- `credentials.ts` - Email/password authentication\n- `github.ts` - GitHub OAuth\n- `google.ts` - Google OAuth  \n- `azure.ts` - Microsoft Entra ID\n\n### Storage Plugins (`src/lib/plugins/storage/`)\n- `url.ts` - URL-based media (default)\n- `s3.ts` - AWS S3 storage\n\n## Internationalization\n\n- Translation files are in `messages/{locale}.json`\n- Currently supported: en, tr, es, zh, ja, ar, pt, fr, de, ko, it\n- Add new locales to `prompts.config.ts` i18n.locales array\n- Create corresponding translation file in `messages/`\n- Add language to selector in `src/components/layout/header.tsx`\n\n## Key Files\n\n| File | Purpose |\n|------|---------|\n| `prompts.config.ts` | Main app configuration |\n| `prisma/schema.prisma` | Database schema |\n| `src/lib/auth/index.ts` | NextAuth configuration |\n| `src/lib/db.ts` | Prisma client singleton |\n| `src/app/layout.tsx` | Root layout with providers |\n| `src/components/ui/` | Base UI components (shadcn) |\n\n## Boundaries\n\n### Always Do\n- Run `npm run lint` before committing\n- Use existing UI components from `src/components/ui/`\n- Add translations for all user-facing text\n- Follow existing code patterns and file structure\n- Use TypeScript strict types\n\n### Ask First\n- Database schema changes (require migrations)\n- Adding new dependencies\n- Modifying authentication flow\n- Changes to `prompts.config.ts` structure\n\n### Never Do\n- Commit secrets or API keys (use `.env`)\n- Modify `node_modules/` or generated files\n- Delete existing translations\n- Remove or weaken TypeScript types\n- Hardcode user-facing strings (use i18n)\n\n## Environment Variables\n\nRequired in `.env`:\n```\nDATABASE_URL=           # PostgreSQL connection string\nAUTH_SECRET=            # NextAuth secret key\n```\n\nOptional OAuth (if using those providers):\n```\nAUTH_GITHUB_ID=\nAUTH_GITHUB_SECRET=\nAUTH_GOOGLE_ID=\nAUTH_GOOGLE_SECRET=\nAUTH_AZURE_AD_CLIENT_ID=\nAUTH_AZURE_AD_CLIENT_SECRET=\nAUTH_AZURE_AD_ISSUER=\n```\n\nOptional features:\n```\nOPENAI_API_KEY=         # For AI-powered semantic search\n```\n\n## Testing\n\nCurrently no automated tests. When implementing:\n- Place tests adjacent to source files or in `__tests__/` directories\n- Use descriptive test names\n- Mock external services (database, OAuth)\n\n## Common Tasks\n\n### Adding a new page\n1. Create route in `src/app/{route}/page.tsx`\n2. Use server component for data fetching\n3. Add translations to `messages/*.json`\n\n### Adding a new component\n1. Create in appropriate `src/components/{category}/` folder\n2. Export from component file (no barrel exports needed)\n3. Follow existing component patterns\n\n### Adding a new API route\n1. Create in `src/app/api/{route}/route.ts`\n2. Export appropriate HTTP method handlers (GET, POST, etc.)\n3. Use Zod for request validation\n4. Return proper JSON responses with status codes\n\n### Modifying database schema\n1. Update `prisma/schema.prisma`\n2. Run `npm run db:migrate` to create migration\n3. Update related TypeScript types if needed\n","CLAUDE.md":"# CLAUDE.md\n\n> Quick reference for Claude Code when working on prompts.chat\n\n## Project Overview\n\n**prompts.chat** is a social platform for AI prompts built with Next.js 16 App Router, React 19, TypeScript, and PostgreSQL/Prisma. It allows users to share, discover, and collect prompts.\n\nFor detailed agent guidelines, see [AGENTS.md](AGENTS.md).\n\n## Quick Commands\n\n```bash\n# Development\nnpm run dev              # Start dev server at localhost:3000\nnpm run build            # Production build (runs prisma generate)\nnpm run lint             # Run ESLint\n\n# Database\nnpm run db:migrate       # Run Prisma migrations\nnpm run db:push          # Push schema changes\nnpm run db:studio        # Open Prisma Studio\nnpm run db:seed          # Seed database\n\n# Type checking\nnpx tsc --noEmit         # Check TypeScript types\n```\n\n## Key Files\n\n| File | Purpose |\n|------|---------|\n| `prompts.config.ts` | Main app configuration (branding, theme, auth, features) |\n| `prisma/schema.prisma` | Database schema |\n| `src/lib/auth/index.ts` | NextAuth configuration |\n| `src/lib/db.ts` | Prisma client singleton |\n| `messages/*.json` | i18n translation files |\n\n## Project Structure\n\n```\nsrc/\n├── app/              # Next.js App Router pages\n│   ├── (auth)/       # Login, register\n│   ├── api/          # API routes\n│   ├── prompts/      # Prompt CRUD pages\n│   └── admin/        # Admin dashboard\n├── components/       # React components\n│   ├── ui/           # shadcn/ui base components\n│   └── prompts/      # Prompt-related components\n└── lib/              # Utilities and config\n    ├── ai/           # OpenAI integration\n    ├── auth/         # NextAuth setup\n    └── plugins/      # Auth and storage plugins\n```\n\n## Code Patterns\n\n- **Server Components** by default, `\"use client\"` only when needed\n- **Translations:** Use `useTranslations()` or `getTranslations()` from next-intl\n- **Styling:** Tailwind CSS with `cn()` utility for conditional classes\n- **Forms:** React Hook Form + Zod validation\n- **Database:** Prisma client from `@/lib/db`\n\n## Before Committing\n\n1. Run `npm run lint` to check for issues\n2. Add translations for any user-facing text\n3. Use existing UI components from `src/components/ui/`\n4. Never commit secrets (use `.env`)\n"},"files":{"AGENTS.md":"# AGENTS.md\n\n> Guidelines for AI coding agents working on this project.\n\n## Project Overview\n\n**prompts.chat** is a social platform for AI prompts built with Next.js 16. It allows users to share, discover, and collect prompts from the community. The project is open source and can be self-hosted with customizable branding, themes, and authentication.\n\n### Tech Stack\n\n- **Framework:** Next.js 16.0.7 (App Router) with React 19.2\n- **Language:** TypeScript 5\n- **Database:** PostgreSQL with Prisma ORM 6.19\n- **Authentication:** NextAuth.js 5 (beta) with pluggable providers (credentials, GitHub, Google, Azure)\n- **Styling:** Tailwind CSS 4 with Radix UI primitives\n- **UI Components:** shadcn/ui pattern (components in `src/components/ui/`)\n- **Internationalization:** next-intl with 11 supported locales\n- **Icons:** Lucide React\n- **Forms:** React Hook Form with Zod validation\n\n## Project Structure\n\n```\n/\n├── prisma/                 # Database schema and migrations\n│   ├── schema.prisma       # Prisma schema definition\n│   ├── migrations/         # Database migrations\n│   └── seed.ts             # Database seeding script\n├── public/                 # Static assets (logos, favicon)\n├── messages/               # i18n translation files (en.json, es.json, etc.)\n├── src/\n│   ├── app/                # Next.js App Router pages\n│   │   ├── (auth)/         # Auth pages (login, register)\n│   │   ├── [username]/     # User profile pages\n│   │   ├── admin/          # Admin dashboard\n│   │   ├── api/            # API routes\n│   │   ├── categories/     # Category pages\n│   │   ├── prompts/        # Prompt CRUD pages\n│   │   ├── feed/           # User feed\n│   │   ├── discover/       # Discovery page\n│   │   ├── settings/       # User settings\n│   │   └── tags/           # Tag pages\n│   ├── components/         # React components\n│   │   ├── admin/          # Admin-specific components\n│   │   ├── auth/           # Authentication components\n│   │   ├── categories/     # Category components\n│   │   ├── layout/         # Layout components (header, etc.)\n│   │   ├── prompts/        # Prompt-related components\n│   │   ├── providers/      # React context providers\n│   │   ├── settings/       # Settings components\n│   │   └── ui/             # shadcn/ui base components\n│   ├── lib/                # Utility libraries\n│   │   ├── ai/             # AI/OpenAI integration\n│   │   ├── auth/           # NextAuth configuration\n│   │   ├── config/         # Config type definitions\n│   │   ├── i18n/           # Internationalization setup\n│   │   ├── plugins/        # Plugin system (auth, storage)\n│   │   ├── db.ts           # Prisma client instance\n│   │   └── utils.ts        # Utility functions (cn)\n│   └── i18n/               # i18n request handler\n├── prompts.config.ts       # Main application configuration\n├── prompts.csv             # Community prompts data source\n└── package.json            # Dependencies and scripts\n```\n\n## Commands\n\n```bash\n# Development\nnpm run dev              # Start development server (localhost:3000)\nnpm run build            # Build for production (runs prisma generate first)\nnpm run start            # Start production server\nnpm run lint             # Run ESLint\n\n# Database\nnpm run db:generate      # Generate Prisma client\nnpm run db:migrate       # Run database migrations\nnpm run db:push          # Push schema changes to database\nnpm run db:studio        # Open Prisma Studio\nnpm run db:seed          # Seed database with initial data\n\n# Type checking\nnpx tsc --noEmit         # Check TypeScript types without emitting\n\n# Translations\nnode scripts/check-translations.js  # Check for missing translations across locales\n```\n\n## Code Style Guidelines\n\n### TypeScript\n\n- Use TypeScript strict mode\n- Prefer explicit types over `any`\n- Use `interface` for object shapes, `type` for unions/intersections\n- Functions: `camelCase` (e.g., `getUserData`, `handleSubmit`)\n- Components: `PascalCase` (e.g., `PromptCard`, `AuthContent`)\n- Constants: `UPPER_SNAKE_CASE` for true constants\n- Files: `kebab-case.tsx` for components, `camelCase.ts` for utilities\n\n### React/Next.js\n\n- Use React Server Components by default\n- Add `\"use client\"` directive only when client interactivity is needed\n- Prefer server actions over API routes for mutations\n- Use `next-intl` for all user-facing strings (never hardcode text)\n- Import translations with `useTranslations()` or `getTranslations()`\n\n### Component Pattern\n\n```tsx\n// Client component example\n\"use client\";\n\nimport { useTranslations } from \"next-intl\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface MyComponentProps {\n  title: string;\n  onAction: () => void;\n}\n\nexport function MyComponent({ title, onAction }: MyComponentProps) {\n  const t = useTranslations(\"namespace\");\n  \n  return (\n    <div className=\"space-y-4\">\n      <h2 className=\"text-lg font-semibold\">{title}</h2>\n      <Button onClick={onAction}>{t(\"actionLabel\")}</Button>\n    </div>\n  );\n}\n```\n\n### Styling\n\n- Use Tailwind CSS utility classes\n- Follow mobile-first responsive design (`sm:`, `md:`, `lg:` breakpoints)\n- Use `cn()` utility from `@/lib/utils` for conditional classes\n- Prefer Radix UI primitives via shadcn/ui components\n- Keep component styling scoped and composable\n\n### Database\n\n- Use Prisma Client from `@/lib/db`\n- Always include proper `select` or `include` for relations\n- Use transactions for multi-step operations\n- Add indexes for frequently queried fields\n\n## Configuration\n\nThe main configuration file is `prompts.config.ts`:\n\n- **branding:** Logo, name, and description\n- **theme:** Colors, border radius, UI variant\n- **auth:** Authentication providers array (credentials, github, google, azure)\n- **i18n:** Supported locales and default locale\n- **features:** Feature flags (privatePrompts, changeRequests, categories, tags, aiSearch)\n- **homepage:** Homepage customization and sponsors\n\n## Plugin System\n\nAuthentication and storage use a plugin architecture:\n\n### Auth Plugins (`src/lib/plugins/auth/`)\n- `credentials.ts` - Email/password authentication\n- `github.ts` - GitHub OAuth\n- `google.ts` - Google OAuth  \n- `azure.ts` - Microsoft Entra ID\n\n### Storage Plugins (`src/lib/plugins/storage/`)\n- `url.ts` - URL-based media (default)\n- `s3.ts` - AWS S3 storage\n\n## Internationalization\n\n- Translation files are in `messages/{locale}.json`\n- Currently supported: en, tr, es, zh, ja, ar, pt, fr, de, ko, it\n- Add new locales to `prompts.config.ts` i18n.locales array\n- Create corresponding translation file in `messages/`\n- Add language to selector in `src/components/layout/header.tsx`\n\n## Key Files\n\n| File | Purpose |\n|------|---------|\n| `prompts.config.ts` | Main app configuration |\n| `prisma/schema.prisma` | Database schema |\n| `src/lib/auth/index.ts` | NextAuth configuration |\n| `src/lib/db.ts` | Prisma client singleton |\n| `src/app/layout.tsx` | Root layout with providers |\n| `src/components/ui/` | Base UI components (shadcn) |\n\n## Boundaries\n\n### Always Do\n- Run `npm run lint` before committing\n- Use existing UI components from `src/components/ui/`\n- Add translations for all user-facing text\n- Follow existing code patterns and file structure\n- Use TypeScript strict types\n\n### Ask First\n- Database schema changes (require migrations)\n- Adding new dependencies\n- Modifying authentication flow\n- Changes to `prompts.config.ts` structure\n\n### Never Do\n- Commit secrets or API keys (use `.env`)\n- Modify `node_modules/` or generated files\n- Delete existing translations\n- Remove or weaken TypeScript types\n- Hardcode user-facing strings (use i18n)\n\n## Environment Variables\n\nRequired in `.env`:\n```\nDATABASE_URL=           # PostgreSQL connection string\nAUTH_SECRET=            # NextAuth secret key\n```\n\nOptional OAuth (if using those providers):\n```\nAUTH_GITHUB_ID=\nAUTH_GITHUB_SECRET=\nAUTH_GOOGLE_ID=\nAUTH_GOOGLE_SECRET=\nAUTH_AZURE_AD_CLIENT_ID=\nAUTH_AZURE_AD_CLIENT_SECRET=\nAUTH_AZURE_AD_ISSUER=\n```\n\nOptional features:\n```\nOPENAI_API_KEY=         # For AI-powered semantic search\n```\n\n## Testing\n\nCurrently no automated tests. When implementing:\n- Place tests adjacent to source files or in `__tests__/` directories\n- Use descriptive test names\n- Mock external services (database, OAuth)\n\n## Common Tasks\n\n### Adding a new page\n1. Create route in `src/app/{route}/page.tsx`\n2. Use server component for data fetching\n3. Add translations to `messages/*.json`\n\n### Adding a new component\n1. Create in appropriate `src/components/{category}/` folder\n2. Export from component file (no barrel exports needed)\n3. Follow existing component patterns\n\n### Adding a new API route\n1. Create in `src/app/api/{route}/route.ts`\n2. Export appropriate HTTP method handlers (GET, POST, etc.)\n3. Use Zod for request validation\n4. Return proper JSON responses with status codes\n\n### Modifying database schema\n1. Update `prisma/schema.prisma`\n2. Run `npm run db:migrate` to create migration\n3. Update related TypeScript types if needed\n","CLAUDE.md":"# CLAUDE.md\n\n> Quick reference for Claude Code when working on prompts.chat\n\n## Project Overview\n\n**prompts.chat** is a social platform for AI prompts built with Next.js 16 App Router, React 19, TypeScript, and PostgreSQL/Prisma. It allows users to share, discover, and collect prompts.\n\nFor detailed agent guidelines, see [AGENTS.md](AGENTS.md).\n\n## Quick Commands\n\n```bash\n# Development\nnpm run dev              # Start dev server at localhost:3000\nnpm run build            # Production build (runs prisma generate)\nnpm run lint             # Run ESLint\n\n# Database\nnpm run db:migrate       # Run Prisma migrations\nnpm run db:push          # Push schema changes\nnpm run db:studio        # Open Prisma Studio\nnpm run db:seed          # Seed database\n\n# Type checking\nnpx tsc --noEmit         # Check TypeScript types\n```\n\n## Key Files\n\n| File | Purpose |\n|------|---------|\n| `prompts.config.ts` | Main app configuration (branding, theme, auth, features) |\n| `prisma/schema.prisma` | Database schema |\n| `src/lib/auth/index.ts` | NextAuth configuration |\n| `src/lib/db.ts` | Prisma client singleton |\n| `messages/*.json` | i18n translation files |\n\n## Project Structure\n\n```\nsrc/\n├── app/              # Next.js App Router pages\n│   ├── (auth)/       # Login, register\n│   ├── api/          # API routes\n│   ├── prompts/      # Prompt CRUD pages\n│   └── admin/        # Admin dashboard\n├── components/       # React components\n│   ├── ui/           # shadcn/ui base components\n│   └── prompts/      # Prompt-related components\n└── lib/              # Utilities and config\n    ├── ai/           # OpenAI integration\n    ├── auth/         # NextAuth setup\n    └── plugins/      # Auth and storage plugins\n```\n\n## Code Patterns\n\n- **Server Components** by default, `\"use client\"` only when needed\n- **Translations:** Use `useTranslations()` or `getTranslations()` from next-intl\n- **Styling:** Tailwind CSS with `cn()` utility for conditional classes\n- **Forms:** React Hook Form + Zod validation\n- **Database:** Prisma client from `@/lib/db`\n\n## Before Committing\n\n1. Run `npm run lint` to check for issues\n2. Add translations for any user-facing text\n3. Use existing UI components from `src/components/ui/`\n4. Never commit secrets (use `.env`)\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# AGENTS.md\n\n> Guidelines for AI coding agents working on this project.\n\n## Project Overview\n\n**prompts.chat** is a social platform for AI prompts built with Next.js 16. It allows users to share, discover, and collect prompts from the community. The project is open source and can be self-hosted with customizable branding, themes, and authentication.\n\n### Tech Stack\n\n- **Framework:** Next.js 16.0.7 (App Router) with React 19.2\n- **Language:** TypeScript 5\n- **Database:** PostgreSQL with Prisma ORM 6.19\n- **Authentication:** NextAuth.js 5 (beta) with pluggable providers (credentials, GitHub, Google, Azure)\n- **Styling:** Tailwind CSS 4 with Radix UI primitives\n- **UI Components:** shadcn/ui pattern (components in `src/components/ui/`)\n- **Internationalization:** next-intl with 11 supported locales\n- **Icons:** Lucide React\n- **Forms:** React Hook Form with Zod validation\n\n## Project Structure\n\n```\n/\n├── prisma/                 # Database schema and migrations\n│   ├── schema.prisma       # Prisma schema definition\n│   ├── migrations/         # Database migrations\n│   └── seed.ts             # Database seeding script\n├── public/                 # Static assets (logos, favicon)\n├── messages/               # i18n translation files (en.json, es.json, etc.)\n├── src/\n│   ├── app/                # Next.js App Router pages\n│   │   ├── (auth)/         # Auth pages (login, register)\n│   │   ├── [username]/     # User profile pages\n│   │   ├── admin/          # Admin dashboard\n│   │   ├── api/            # API routes\n│   │   ├── categories/     # Category pages\n│   │   ├── prompts/        # Prompt CRUD pages\n│   │   ├── feed/           # User feed\n│   │   ├── discover/       # Discovery page\n│   │   ├── settings/       # User settings\n│   │   └── tags/           # Tag pages\n│   ├── components/         # React components\n│   │   ├── admin/          # Admin-specific components\n│   │   ├── auth/           # Authentication components\n│   │   ├── categories/     # Category components\n│   │   ├── layout/         # Layout components (header, etc.)\n│   │   ├── prompts/        # Prompt-related components\n│   │   ├── providers/      # React context providers\n│   │   ├── settings/       # Settings components\n│   │   └── ui/             # shadcn/ui base components\n│   ├── lib/                # Utility libraries\n│   │   ├── ai/             # AI/OpenAI integration\n│   │   ├── auth/           # NextAuth configuration\n│   │   ├── config/         # Config type definitions\n│   │   ├── i18n/           # Internationalization setup\n│   │   ├── plugins/        # Plugin system (auth, storage)\n│   │   ├── db.ts           # Prisma client instance\n│   │   └── utils.ts        # Utility functions (cn)\n│   └── i18n/               # i18n request handler\n├── prompts.config.ts       # Main application configuration\n├── prompts.csv             # Community prompts data source\n└── package.json            # Dependencies and scripts\n```\n\n## Commands\n\n```bash\n# Development\nnpm run dev              # Start development server (localhost:3000)\nnpm run build            # Build for production (runs prisma generate first)\nnpm run start            # Start production server\nnpm run lint             # Run ESLint\n\n# Database\nnpm run db:generate      # Generate Prisma client\nnpm run db:migrate       # Run database migrations\nnpm run db:push          # Push schema changes to database\nnpm run db:studio        # Open Prisma Studio\nnpm run db:seed          # Seed database with initial data\n\n# Type checking\nnpx tsc --noEmit         # Check TypeScript types without emitting\n\n# Translations\nnode scripts/check-translations.js  # Check for missing translations across locales\n```\n\n## Code Style Guidelines\n\n### TypeScript\n\n- Use TypeScript strict mode\n- Prefer explicit types over `any`\n- Use `interface` for object shapes, `type` for unions/intersections\n- Functions: `camelCase` (e.g., `getUserData`, `handleSubmit`)\n- Components: `PascalCase` (e.g., `PromptCard`, `AuthContent`)\n- Constants: `UPPER_SNAKE_CASE` for true constants\n- Files: `kebab-case.tsx` for components, `camelCase.ts` for utilities\n\n### React/Next.js\n\n- Use React Server Components by default\n- Add `\"use client\"` directive only when client interactivity is needed\n- Prefer server actions over API routes for mutations\n- Use `next-intl` for all user-facing strings (never hardcode text)\n- Import translations with `useTranslations()` or `getTranslations()`\n\n### Component Pattern\n\n```tsx\n// Client component example\n\"use client\";\n\nimport { useTranslations } from \"next-intl\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface MyComponentProps {\n  title: string;\n  onAction: () => void;\n}\n\nexport function MyComponent({ title, onAction }: MyComponentProps) {\n  const t = useTranslations(\"namespace\");\n  \n  return (\n    <div className=\"space-y-4\">\n      <h2 className=\"text-lg font-semibold\">{title}</h2>\n      <Button onClick={onAction}>{t(\"actionLabel\")}</Button>\n    </div>\n  );\n}\n```\n\n### Styling\n\n- Use Tailwind CSS utility classes\n- Follow mobile-first responsive design (`sm:`, `md:`, `lg:` breakpoints)\n- Use `cn()` utility from `@/lib/utils` for conditional classes\n- Prefer Radix UI primitives via shadcn/ui components\n- Keep component styling scoped and composable\n\n### Database\n\n- Use Prisma Client from `@/lib/db`\n- Always include proper `select` or `include` for relations\n- Use transactions for multi-step operations\n- Add indexes for frequently queried fields\n\n## Configuration\n\nThe main configuration file is `prompts.config.ts`:\n\n- **branding:** Logo, name, and description\n- **theme:** Colors, border radius, UI variant\n- **auth:** Authentication providers array (credentials, github, google, azure)\n- **i18n:** Supported locales and default locale\n- **features:** Feature flags (privatePrompts, changeRequests, categories, tags, aiSearch)\n- **homepage:** Homepage customization and sponsors\n\n## Plugin System\n\nAuthentication and storage use a plugin architecture:\n\n### Auth Plugins (`src/lib/plugins/auth/`)\n- `credentials.ts` - Email/password authentication\n- `github.ts` - GitHub OAuth\n- `google.ts` - Google OAuth  \n- `azure.ts` - Microsoft Entra ID\n\n### Storage Plugins (`src/lib/plugins/storage/`)\n- `url.ts` - URL-based media (default)\n- `s3.ts` - AWS S3 storage\n\n## Internationalization\n\n- Translation files are in `messages/{locale}.json`\n- Currently supported: en, tr, es, zh, ja, ar, pt, fr, de, ko, it\n- Add new locales to `prompts.config.ts` i18n.locales array\n- Create corresponding translation file in `messages/`\n- Add language to selector in `src/components/layout/header.tsx`\n\n## Key Files\n\n| File | Purpose |\n|------|---------|\n| `prompts.config.ts` | Main app configuration |\n| `prisma/schema.prisma` | Database schema |\n| `src/lib/auth/index.ts` | NextAuth configuration |\n| `src/lib/db.ts` | Prisma client singleton |\n| `src/app/layout.tsx` | Root layout with providers |\n| `src/components/ui/` | Base UI components (shadcn) |\n\n## Boundaries\n\n### Always Do\n- Run `npm run lint` before committing\n- Use existing UI components from `src/components/ui/`\n- Add translations for all user-facing text\n- Follow existing code patterns and file structure\n- Use TypeScript strict types\n\n### Ask First\n- Database schema changes (require migrations)\n- Adding new dependencies\n- Modifying authentication flow\n- Changes to `prompts.config.ts` structure\n\n### Never Do\n- Commit secrets or API keys (use `.env`)\n- Modify `node_modules/` or generated files\n- Delete existing translations\n- Remove or weaken TypeScript types\n- Hardcode user-facing strings (use i18n)\n\n## Environment Variables\n\nRequired in `.env`:\n```\nDATABASE_URL=           # PostgreSQL connection string\nAUTH_SECRET=            # NextAuth secret key\n```\n\nOptional OAuth (if using those providers):\n```\nAUTH_GITHUB_ID=\nAUTH_GITHUB_SECRET=\nAUTH_GOOGLE_ID=\nAUTH_GOOGLE_SECRET=\nAUTH_AZURE_AD_CLIENT_ID=\nAUTH_AZURE_AD_CLIENT_SECRET=\nAUTH_AZURE_AD_ISSUER=\n```\n\nOptional features:\n```\nOPENAI_API_KEY=         # For AI-powered semantic search\n```\n\n## Testing\n\nCurrently no automated tests. When implementing:\n- Place tests adjacent to source files or in `__tests__/` directories\n- Use descriptive test names\n- Mock external services (database, OAuth)\n\n## Common Tasks\n\n### Adding a new page\n1. Create route in `src/app/{route}/page.tsx`\n2. Use server component for data fetching\n3. Add translations to `messages/*.json`\n\n### Adding a new component\n1. Create in appropriate `src/components/{category}/` folder\n2. Export from component file (no barrel exports needed)\n3. Follow existing component patterns\n\n### Adding a new API route\n1. Create in `src/app/api/{route}/route.ts`\n2. Export appropriate HTTP method handlers (GET, POST, etc.)\n3. Use Zod for request validation\n4. Return proper JSON responses with status codes\n\n### Modifying database schema\n1. Update `prisma/schema.prisma`\n2. Run `npm run db:migrate` to create migration\n3. Update related TypeScript types if needed\n","category":"root","tokens":2235},{"name":"CLAUDE.md","path":"CLAUDE.md","title":"CLAUDE.md","content":"# CLAUDE.md\n\n> Quick reference for Claude Code when working on prompts.chat\n\n## Project Overview\n\n**prompts.chat** is a social platform for AI prompts built with Next.js 16 App Router, React 19, TypeScript, and PostgreSQL/Prisma. It allows users to share, discover, and collect prompts.\n\nFor detailed agent guidelines, see [AGENTS.md](AGENTS.md).\n\n## Quick Commands\n\n```bash\n# Development\nnpm run dev              # Start dev server at localhost:3000\nnpm run build            # Production build (runs prisma generate)\nnpm run lint             # Run ESLint\n\n# Database\nnpm run db:migrate       # Run Prisma migrations\nnpm run db:push          # Push schema changes\nnpm run db:studio        # Open Prisma Studio\nnpm run db:seed          # Seed database\n\n# Type checking\nnpx tsc --noEmit         # Check TypeScript types\n```\n\n## Key Files\n\n| File | Purpose |\n|------|---------|\n| `prompts.config.ts` | Main app configuration (branding, theme, auth, features) |\n| `prisma/schema.prisma` | Database schema |\n| `src/lib/auth/index.ts` | NextAuth configuration |\n| `src/lib/db.ts` | Prisma client singleton |\n| `messages/*.json` | i18n translation files |\n\n## Project Structure\n\n```\nsrc/\n├── app/              # Next.js App Router pages\n│   ├── (auth)/       # Login, register\n│   ├── api/          # API routes\n│   ├── prompts/      # Prompt CRUD pages\n│   └── admin/        # Admin dashboard\n├── components/       # React components\n│   ├── ui/           # shadcn/ui base components\n│   └── prompts/      # Prompt-related components\n└── lib/              # Utilities and config\n    ├── ai/           # OpenAI integration\n    ├── auth/         # NextAuth setup\n    └── plugins/      # Auth and storage plugins\n```\n\n## Code Patterns\n\n- **Server Components** by default, `\"use client\"` only when needed\n- **Translations:** Use `useTranslations()` or `getTranslations()` from next-intl\n- **Styling:** Tailwind CSS with `cn()` utility for conditional classes\n- **Forms:** React Hook Form + Zod validation\n- **Database:** Prisma client from `@/lib/db`\n\n## Before Committing\n\n1. Run `npm run lint` to check for issues\n2. Add translations for any user-facing text\n3. Use existing UI components from `src/components/ui/`\n4. Never commit secrets (use `.env`)\n","category":"root","tokens":561}]}