Parcourir la source

Add .cursorrules file with comprehensive repository structure documentation for AI assistants

Timothy Pomeroy il y a 1 mois
Parent
commit
c53cbe19a2
1 fichiers modifiés avec 206 ajouts et 0 suppressions
  1. 206 0
      .cursorrules

+ 206 - 0
.cursorrules

@@ -0,0 +1,206 @@
+# Cursor Rules for Watch Finished Turbo
+
+## Repository Overview
+This is a Turborepo monorepo containing a full-stack video processing system with automatic file watching, HandBrake integration, and a web interface for management.
+
+## Project Structure
+
+### Apps (`/apps`)
+- **`web/`**: Next.js 14 application with TypeScript, Tailwind CSS
+  - Real-time dashboard for monitoring video processing
+  - WebSocket integration for live updates
+  - Located at `apps/web/`
+- **`service/`**: NestJS API server with TypeScript
+  - REST API endpoints for file management
+  - WebSocket gateway for real-time events
+  - SQLite database integration
+  - Located at `apps/service/`
+- **`cli/`**: Node.js command-line interface
+  - Interactive CLI for system management
+  - Direct command execution capabilities
+  - Located at `apps/cli/`
+
+### Packages (`/packages`)
+- **`eslint-config/`**: Shared ESLint configurations
+  - Base config, Next.js config, React internal config
+  - Used across all TypeScript projects
+- **`typescript-config/`**: Shared TypeScript configurations
+  - Base config, Next.js config, React library config
+  - Extended by all TypeScript packages
+- **`ui/`**: Shared React components (currently a stub)
+  - Future shared UI components
+  - Tailwind CSS integration
+
+### Data (`/data`)
+- SQLite database files
+- Schema documentation in `data/README.md`
+- Contains processed video metadata, tasks, and settings
+
+### Documentation (`/docs`)
+- `DEVELOPMENT_NOTES.md`: Setup and development guide
+- Architecture documentation
+- Additional technical documentation
+
+### Scripts (`/scripts`)
+- Build and deployment scripts
+- Automation tools
+
+## Technology Stack
+
+### Frontend (Web App)
+- **Framework**: Next.js 14 with App Router
+- **Language**: TypeScript
+- **Styling**: Tailwind CSS
+- **State Management**: React hooks + WebSocket
+- **Testing**: Jest + Playwright
+
+### Backend (Service)
+- **Framework**: NestJS
+- **Language**: TypeScript
+- **Database**: SQLite with custom service layer
+- **WebSocket**: Socket.IO integration
+- **Testing**: Jest
+
+### CLI
+- **Runtime**: Node.js
+- **Language**: TypeScript
+- **Interface**: Commander.js or similar
+
+### Build & Development
+- **Monorepo**: Turborepo
+- **Package Manager**: pnpm
+- **Linting**: ESLint (shared configs)
+- **Type Checking**: TypeScript (shared configs)
+- **Container**: Docker + Docker Compose
+
+## Development Workflow
+
+### Getting Started
+```bash
+pnpm install
+pnpm run dev  # Starts all services
+```
+
+### Individual Services
+```bash
+pnpm run web      # Next.js on :3000
+pnpm run service  # NestJS on :3001
+pnpm run cli      # Interactive CLI
+```
+
+### Key Scripts
+- `pnpm run build` - Build all apps
+- `pnpm run lint` - Run ESLint
+- `pnpm run test` - Run tests
+
+## Code Organization Principles
+
+### File Naming
+- Use kebab-case for directories (e.g., `file-watcher.service.ts`)
+- Use PascalCase for classes and components
+- Use camelCase for variables and functions
+- Use kebab-case for file names (e.g., `app.controller.ts`)
+
+### Import Structure
+- Relative imports for same-package files
+- Absolute imports for cross-package dependencies
+- Group imports: Node.js built-ins, external packages, internal packages
+
+### Database Schema
+- SQLite with tables: files, tasks, settings
+- Custom service layer for data access
+- Migration system for schema updates
+
+## Architecture Patterns
+
+### Service Layer Pattern
+- Controllers handle HTTP/WebSocket requests
+- Services contain business logic
+- Database operations abstracted through services
+
+### Event-Driven Architecture
+- WebSocket events for real-time updates
+- File system watching triggers processing
+- Background task queue for video processing
+
+### Configuration Management
+- Environment-based configuration
+- Database-stored settings for datasets
+- Shared config packages for consistency
+
+## Common Development Tasks
+
+### Adding a New API Endpoint
+1. Add route in controller (`apps/service/src/app.controller.ts`)
+2. Implement business logic in service
+3. Update WebSocket events if needed
+4. Update API documentation
+
+### Adding a New Web Page
+1. Create page in `apps/web/src/app/`
+2. Add components in appropriate directories
+3. Connect to API endpoints
+4. Update navigation if needed
+
+### Adding Shared Components
+1. Add to `packages/ui/src/`
+2. Export from `packages/ui/src/index.ts`
+3. Import in consuming apps
+
+## Testing Strategy
+
+### Unit Tests
+- Service methods and utilities
+- Component logic (where applicable)
+- Database operations
+
+### Integration Tests
+- API endpoints
+- WebSocket connections
+- CLI commands
+
+### E2E Tests
+- Full user workflows
+- Critical path testing
+- Playwright for web interface
+
+## Deployment
+
+### Docker
+- Multi-stage builds for optimization
+- Separate containers for web, service, and database
+- Docker Compose for local development
+
+### Production Considerations
+- Environment variable management
+- Database backups and migrations
+- Monitoring and logging
+- CDN for static assets
+
+## Contributing Guidelines
+
+1. Follow existing code patterns and naming conventions
+2. Add tests for new functionality
+3. Update documentation for API changes
+4. Use conventional commits
+5. Run full test suite before submitting PRs
+
+## Troubleshooting
+
+### Common Issues
+- Port conflicts: Check if services are already running
+- Database errors: Verify SQLite file permissions
+- Build failures: Clear node_modules and reinstall
+- WebSocket issues: Check CORS and firewall settings
+
+### Debug Commands
+```bash
+# Check service status
+pnpm run service:status
+
+# View logs
+pnpm run logs
+
+# Reset database
+pnpm run db:reset
+```