Update
This commit is contained in:
94
CLAUDE.md
Normal file
94
CLAUDE.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Development Commands
|
||||
|
||||
### Frontend Development
|
||||
- `npm run dev` - Start Vite development server
|
||||
- `npm run build` - Build for production
|
||||
- `npm run build:ssr` - Build with SSR support
|
||||
- `npm run lint` - Run ESLint with auto-fix
|
||||
- `npm run types` - Run TypeScript type checking
|
||||
- `npm run format` - Format code with Prettier
|
||||
- `npm run format:check` - Check code formatting
|
||||
|
||||
### Backend Development
|
||||
- `composer dev` - Start full development environment (Laravel server, queue worker, logs, Vite)
|
||||
- `composer dev:ssr` - Start development with SSR
|
||||
- `composer test` - Run PHP tests with Pest
|
||||
- `php artisan serve` - Start Laravel development server
|
||||
- `php artisan queue:listen --tries=1` - Start queue worker
|
||||
- `php artisan pail --timeout=0` - Start log viewer
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
### Stack
|
||||
- **Backend**: Laravel 12 with PHP 8.2+
|
||||
- **Frontend**: React 19 + TypeScript with Inertia.js
|
||||
- **Database**: PostgreSQL with pgvector extension for embeddings
|
||||
- **Queue System**: Laravel Horizon for job processing
|
||||
- **Payment**: Laravel Cashier with Stripe integration
|
||||
- **Media Processing**: FFmpeg integration via pbmedia/laravel-ffmpeg
|
||||
- **Authentication**: Laravel Sanctum + Google OAuth via Socialite
|
||||
|
||||
### Core Application Structure
|
||||
|
||||
**MemeAI Generator Platform**: This is a meme generation platform that uses AI to create memes from user inputs.
|
||||
|
||||
#### Key Models & Relationships
|
||||
- `User` - Uses Billable trait for Stripe, has UUID-based public IDs
|
||||
- `Meme` - Generated memes with keyword categorization (action/emotion/misc)
|
||||
- `MemeMedia` - Template media files for meme generation
|
||||
- `BackgroundMedia` - Background images/videos for memes
|
||||
- `Category` - Hierarchical categories using kalnoy/nestedset
|
||||
- `UserUsage` & `UserPlan` - Usage tracking and subscription management
|
||||
- `KeywordEmbedding` & `MemeMediaEmbedding` - Vector embeddings for content matching
|
||||
|
||||
#### AI Integration Points
|
||||
- `CloudflareAI`, `OpenAI`, `RunwareAI` - Multiple AI service integrations
|
||||
- `MemeGenerator` - Core meme generation logic with keyword matching via vector similarity
|
||||
- Uses pgvector for semantic search and content matching
|
||||
|
||||
#### Frontend Architecture
|
||||
- **Inertia.js** full-stack integration between Laravel and React
|
||||
- **Zustand** for state management (VideoEditorStore, MediaStore, UserStore, PricingStore)
|
||||
- **Radix UI** + **Tailwind CSS** for component library
|
||||
- **Konva.js** + **React-Konva** for canvas-based video/meme editing
|
||||
- **FFmpeg.wasm** for client-side media processing
|
||||
|
||||
#### Media Processing Pipeline
|
||||
- Video templates stored as JSON configurations
|
||||
- Canvas-based editor with timeline support
|
||||
- Server-side FFmpeg processing for final video generation
|
||||
- S3/R2 storage integration via Laravel Filesystem
|
||||
|
||||
#### Key Helper Classes
|
||||
- `MediaEngine` - Media processing utilities
|
||||
- `PurchaseHelper`, `SubscriptionHelper` - Payment processing
|
||||
- `WatermarkUsageHelper` - Usage tracking and limits
|
||||
- `StripeHelper` - Stripe integration utilities
|
||||
|
||||
### Development Notes
|
||||
|
||||
#### Testing
|
||||
- Uses Pest PHP for backend testing
|
||||
- Test files in `tests/Feature/` and `tests/Unit/`
|
||||
- Run tests with `composer test`
|
||||
|
||||
#### Code Organization
|
||||
- Custom helpers in `app/Helpers/FirstParty/`
|
||||
- Global helper functions in `app/Helpers/Global/helpers.php`
|
||||
- Frontend components organized by feature in `resources/js/modules/`
|
||||
- Reusable UI components in `resources/js/components/ui/`
|
||||
|
||||
#### Special Configurations
|
||||
- CORS headers configured for FFmpeg.wasm in Vite config
|
||||
- Vector search capabilities via PostgreSQL pgvector extension
|
||||
- Hashids for public ID generation (users, etc.)
|
||||
- Queue-based background processing for media generation
|
||||
|
||||
#### Environment-Specific Features
|
||||
- Test routes can be enabled via `ENABLE_TEST_ROUTES=true`
|
||||
- Uses Laravel Horizon for queue management in production
|
||||
- Supports both regular and SSR deployments
|
||||
Reference in New Issue
Block a user