mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-12-18 19:32:21 -06:00
feat: add project guidelines and configuration files for development standards
- Introduce AGENTS.md for repository guidelines and project structure - Add core development principles in .cursor/rules/core-development.mdc - Establish project-specific context in .cursor/rules/project-context.mdc - Implement Cursor IDE configuration in .cursor/rules/cursor.json - Create specialized rules for controllers, services, DTOs, guards, routes, and integrations - Update .gitignore to exclude unnecessary files - Enhance CLAUDE.md with project overview and common development commands
This commit is contained in:
144
.cursor/rules/core-development.mdc
Normal file
144
.cursor/rules/core-development.mdc
Normal file
@@ -0,0 +1,144 @@
|
||||
---
|
||||
description: Core development principles and standards for Evolution API development
|
||||
globs:
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# Evolution API Development Standards
|
||||
|
||||
## Cross-References
|
||||
- **Project Context**: @project-context.mdc for Evolution API-specific patterns
|
||||
- **Specialized Rules**:
|
||||
- @specialized-rules/service-rules.mdc for service layer patterns
|
||||
- @specialized-rules/controller-rules.mdc for controller patterns
|
||||
- @specialized-rules/dto-rules.mdc for DTO validation patterns
|
||||
- @specialized-rules/guard-rules.mdc for authentication/authorization
|
||||
- @specialized-rules/route-rules.mdc for router patterns
|
||||
- @specialized-rules/type-rules.mdc for TypeScript definitions
|
||||
- @specialized-rules/util-rules.mdc for utility functions
|
||||
- @specialized-rules/validate-rules.mdc for validation schemas
|
||||
- @specialized-rules/integration-channel-rules.mdc for channel integrations
|
||||
- @specialized-rules/integration-chatbot-rules.mdc for chatbot integrations
|
||||
- @specialized-rules/integration-storage-rules.mdc for storage integrations
|
||||
- @specialized-rules/integration-event-rules.mdc for event integrations
|
||||
- **TypeScript/Node.js**: Node.js 20+ + TypeScript 5+ best practices
|
||||
- **Express/Prisma**: Express.js + Prisma ORM patterns
|
||||
- **WhatsApp Integrations**: Baileys + Meta Business API patterns
|
||||
|
||||
## Senior Engineer Context - Evolution API Platform
|
||||
- You are a senior software engineer working on a WhatsApp API platform
|
||||
- Focus on Node.js + TypeScript + Express.js full-stack development
|
||||
- Specialized in real-time messaging, WhatsApp integrations, and event-driven architecture
|
||||
- Apply scalable patterns for multi-tenant API platform
|
||||
- Consider WhatsApp integration workflow implications and performance at scale
|
||||
|
||||
## Fundamental Principles
|
||||
|
||||
### Code Quality Standards
|
||||
- **Simplicity First**: Always prefer simple solutions over complex ones
|
||||
- **DRY Principle**: Avoid code duplication - check for existing similar functionality before implementing
|
||||
- **Single Responsibility**: Each function/class should have one clear purpose
|
||||
- **Readable Code**: Write code that tells a story - clear naming and structure
|
||||
|
||||
### Problem Resolution Approach
|
||||
- **Follow Existing Patterns**: Use established Service patterns, DTOs, and Integration patterns
|
||||
- **Event-Driven First**: Leverage EventEmitter2 for event publishing when adding new features
|
||||
- **Integration Pattern**: Follow existing WhatsApp integration patterns for new channels
|
||||
- **Conservative Changes**: Prefer extending existing services over creating new architecture
|
||||
- **Clean Migration**: Remove deprecated patterns when introducing new ones
|
||||
- **Incremental Changes**: Break large changes into smaller, testable increments with proper migrations
|
||||
|
||||
### File and Function Organization - Node.js/TypeScript Structure
|
||||
- **Services**: Keep services focused and under 200 lines
|
||||
- **Controllers**: Keep controllers thin - only routing and validation
|
||||
- **DTOs**: Use class-validator for all input validation
|
||||
- **Integrations**: Follow `src/api/integrations/` structure for new integrations
|
||||
- **Utils**: Extract common functionality into well-named utilities
|
||||
- **Types**: Define clear TypeScript interfaces and types
|
||||
|
||||
### Code Analysis and Reflection
|
||||
- After writing code, deeply reflect on scalability and maintainability
|
||||
- Provide 1-2 paragraph analysis of code changes
|
||||
- Suggest improvements or next steps based on reflection
|
||||
- Consider performance, security, and maintenance implications
|
||||
|
||||
## Development Standards
|
||||
|
||||
### TypeScript Standards
|
||||
- **Strict Mode**: Always use TypeScript strict mode
|
||||
- **No Any**: Avoid `any` type - use proper typing
|
||||
- **Interfaces**: Define clear contracts with interfaces
|
||||
- **Enums**: Use enums for constants and status values
|
||||
- **Generics**: Use generics for reusable components
|
||||
|
||||
### Error Handling Standards
|
||||
- **HTTP Exceptions**: Use appropriate HTTP status codes
|
||||
- **Logging**: Structured logging with context
|
||||
- **Retry Logic**: Implement retry for external services
|
||||
- **Graceful Degradation**: Handle service failures gracefully
|
||||
|
||||
### Security Standards
|
||||
- **Input Validation**: Validate all inputs with class-validator
|
||||
- **Authentication**: Use API keys and JWT tokens
|
||||
- **Rate Limiting**: Implement rate limiting for APIs
|
||||
- **Data Sanitization**: Sanitize sensitive data in logs
|
||||
|
||||
### Performance Standards
|
||||
- **Caching**: Use Redis for frequently accessed data
|
||||
- **Database**: Optimize Prisma queries with proper indexing
|
||||
- **Memory**: Monitor memory usage and implement cleanup
|
||||
- **Async**: Use async/await properly with error handling
|
||||
|
||||
## Communication Standards
|
||||
|
||||
### Language Requirements
|
||||
- **User Communication**: Always respond in Portuguese (PT-BR)
|
||||
- **Code Comments**: English for technical documentation
|
||||
- **API Documentation**: English for consistency
|
||||
- **Error Messages**: Portuguese for user-facing errors
|
||||
|
||||
### Documentation Standards
|
||||
- **Code Comments**: Document complex business logic
|
||||
- **API Documentation**: Document all public endpoints
|
||||
- **README**: Keep project documentation updated
|
||||
- **Changelog**: Document breaking changes
|
||||
|
||||
## Quality Assurance
|
||||
|
||||
### Testing Standards
|
||||
- **Unit Tests**: Test business logic in services
|
||||
- **Integration Tests**: Test API endpoints
|
||||
- **Mocks**: Mock external dependencies
|
||||
- **Coverage**: Aim for 70%+ test coverage
|
||||
|
||||
### Code Review Standards
|
||||
- **Peer Review**: All code must be reviewed
|
||||
- **Automated Checks**: ESLint, Prettier, TypeScript
|
||||
- **Security Review**: Check for security vulnerabilities
|
||||
- **Performance Review**: Check for performance issues
|
||||
|
||||
## Evolution API Specific Patterns
|
||||
|
||||
### WhatsApp Integration Patterns
|
||||
- **Connection Management**: One connection per instance
|
||||
- **Event Handling**: Proper event listeners for Baileys
|
||||
- **Message Processing**: Queue-based message processing
|
||||
- **Error Recovery**: Automatic reconnection logic
|
||||
|
||||
### Multi-Database Support
|
||||
- **Schema Compatibility**: Support PostgreSQL and MySQL
|
||||
- **Migration Sync**: Keep migrations synchronized
|
||||
- **Type Safety**: Use Prisma generated types
|
||||
- **Connection Pooling**: Proper database connection management
|
||||
|
||||
### Cache Strategy
|
||||
- **Redis Primary**: Use Redis for distributed caching
|
||||
- **Local Fallback**: Node-cache for local fallback
|
||||
- **TTL Strategy**: Appropriate TTL for different data types
|
||||
- **Cache Invalidation**: Proper cache invalidation patterns
|
||||
|
||||
### Event System
|
||||
- **EventEmitter2**: Use for internal events
|
||||
- **WebSocket**: Socket.io for real-time updates
|
||||
- **Queue Systems**: RabbitMQ/SQS for async processing
|
||||
- **Webhook Processing**: Proper webhook validation and processing
|
||||
Reference in New Issue
Block a user