Tabela de conteúdos

.cursorrules Laravel Senior Padrão

📋 Visão Geral

Template completo de .cursorrules para desenvolvimento Laravel Senior com padrões avançados, otimizado para Cursor AI.

🚀 Comando de Criação

crie um .cursorrules laravel senior padrão

⚙️ Pré-requisitos

Antes de usar este template, certifique-se de ter:

📁 Estrutura do Arquivo

O arquivo .cursorrules será criado na raiz do projeto com:

projeto/
└── .cursorrules          # Arquivo principal de regras

🔧 Passo a Passo Detalhado

Passo 1: Preparação do Ambiente

1. Verificações:

Passo 2: Configuração Automática

O sistema realizará automaticamente:

1. Configuração de regras:

2. Integração com ferramentas:

🔍 Troubleshooting

Problemas Comuns

1. Arquivo não reconhecido:

2. Regras não aplicadas:

3. Conflitos com outros .cursorrules:

Scripts

.cursorrules Completo

# Laravel Senior Development Rules
# Version: 1.0.0
# Author: Cursor AI Assistant

# ===== REGRAS CRÍTICAS =====
rules:
  # 1. CÓDIGO EM INGLÊS OBRIGATÓRIO
  english_code:
    description: "TODO código deve ser escrito em inglês"
    classes: "UserController, OrderService, ProductRepository"
    methods: "createUser(), processOrder(), validateEmail()"
    variables: "$userData, $orderTotal, $productList"
    interfaces: "UserInterface, OrderRepositoryInterface"
    enums: "OrderStatus, PaymentMethod"
    migrations: "create_users_table, add_email_to_orders_table"

  # 2. PADRÕES DE COMMIT
  commit_patterns:
    backend: "🐘 Backend ✨ feat: Curta Descrição"
    frontend: "⚛️ Frontend ✨ feat: Curta Descrição"
    devops: "🐳 DevOps 🚀 deploy: Curta Descrição"
    docs: "📝 Docs ✨ feat: Curta Descrição"
    prefixes:
      - "📝 docs: Alterações em documentação"
      - "✨ feat: Novas funcionalidades"
      - "🐛 fix: Correções de bugs"
      - "♻️ refactor: Refatoração de código"
      - "🎨 style: Formatação e estilo"
      - "⚡ perf: Melhorias de performance"
      - "🔧 chore: Tarefas de manutenção"
      - "🔥 remove: Remoção de código/arquivos"
      - "🚀 deploy: Alterações de deploy"

# ===== ESTRUTURA DE ARQUIVOS =====
file_structure:
  backend:
    controllers: "app/Http/Controllers/Api/"
    models: "app/Models/"
    services: "app/Services/"
    repositories: "app/Repositories/"
    requests: "app/Http/Requests/"
    resources: "app/Http/Resources/"
    migrations: "database/migrations/"
    seeders: "database/seeders/"
    factories: "database/factories/"
    tests: "tests/"
  
  frontend:
    components: "src/components/"
    pages: "src/pages/"
    hooks: "src/hooks/"
    services: "src/services/"
    types: "src/types/"
    utils: "src/utils/"
    tests: "__tests__/"

# ===== PADRÕES DE CÓDIGO =====
code_patterns:
  laravel:
    controller: |
      class OrderController extends Controller
      {
          public function __construct(
              private OrderService $orderService
          ) {}
      
          public function store(StoreOrderRequest $request): JsonResponse
          {
              $order = $this->orderService->create($request->validated());
              return new OrderResource($order);
          }
      }
    
    service: |
      class OrderService
      {
          public function create(array $data): Order
          {
              DB::beginTransaction();
              try {
                  $order = Order::create($data);
                  event(new OrderCreated($order));
                  DB::commit();
                  return $order;
              } catch (Exception $e) {
                  DB::rollBack();
                  throw $e;
              }
          }
      }
    
    repository: |
      interface ProductRepositoryInterface
      {
          public function getPaginated(array $filters): LengthAwarePaginator;
          public function findById(int $id): ?Product;
          public function create(array $data): Product;
          public function update(Product $product, array $data): Product;
          public function delete(Product $product): bool;
      }

  react:
    component: |
      interface ProductCardProps {
        product: Product;
        onAddToCart: (product: Product) => void;
      }
      
      const ProductCard: React.FC<ProductCardProps> = memo(
        ({ product, onAddToCart }) => {
          const handleAddToCart = useCallback(() => {
            onAddToCart(product);
          }, [product, onAddToCart]);
      
          return (
            <Card>
              <Card.Header>{product.name}</Card.Header>
              <Card.Body>
                <Button onClick={handleAddToCart}>Add to Cart</Button>
              </Card.Body>
            </Card>
          );
        }
      );
    
    hook: |
      export const useProducts = (filters?: ProductFilters) => {
        return useQuery({
          queryKey: ['products', filters],
          queryFn: () => productService.getProducts(filters),
          staleTime: 5 * 60 * 1000,
        });
      };

# ===== VERIFICAÇÕES AUTOMÁTICAS =====
verification_commands:
  backend:
    - "find backend/app/Models -name '*.php' | head -10"
    - "find backend/app/Http/Controllers/Api -name '*.php' | head -10"
    - "grep -r 'Route::' backend/routes/api.php"
    - "php artisan route:list"
    - "php artisan migrate:status"
  
  frontend:
    - "find frontend/src/pages -name '*.tsx' | head -10"
    - "find frontend/src/components -name '*.tsx' | head -10"
    - "find frontend/src/hooks -name '*.ts' | head -10"
    - "find frontend/src/services -name '*.ts' | head -10"
    - "npm run type-check"
    - "npm run lint"

# ===== COMANDOS ÚTEIS =====
useful_commands:
  laravel:
    development:
      - "php artisan serve"
      - "php artisan migrate:fresh --seed"
      - "php artisan queue:work"
      - "php artisan tinker"
    testing:
      - "php artisan test"
      - "php artisan test --coverage"
      - "php artisan test --filter=UserTest"
    maintenance:
      - "php artisan optimize"
      - "php artisan config:cache"
      - "php artisan route:cache"
      - "php artisan view:cache"
  
  react:
    development:
      - "npm run dev"
      - "npm run build"
      - "npm run preview"
    testing:
      - "npm test"
      - "npm run test:watch"
      - "npm run test:coverage"
    validation:
      - "npm run type-check"
      - "npm run lint"
      - "npm run validate:quick"

# ===== CONFIGURAÇÕES DE AMBIENTE =====
environment:
  backend_env: |
    APP_NAME="Nome do Projeto"
    APP_ENV=local
    APP_KEY=base64:...
    APP_DEBUG=true
    APP_URL=http://localhost:8000
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=rei_do_oleo
    DB_USERNAME=root
    DB_PASSWORD=
    
    CACHE_DRIVER=redis
    SESSION_DRIVER=redis
    QUEUE_CONNECTION=redis
    
    REDIS_HOST=127.0.0.1
    REDIS_PASSWORD=null
    REDIS_PORT=6379
  
  frontend_env: |
    VITE_APP_NAME="Nome do Projeto"
    VITE_API_URL=http://localhost:8000/api
    VITE_APP_URL=http://localhost:3000
    VITE_APP_ENV=development

# ===== SEGURANÇA E BOAS PRÁTICAS =====
security:
  laravel:
    - "Usar Rate Limiting em rotas sensíveis"
    - "Validar todos os inputs com Form Requests"
    - "Usar Eloquent ORM para prevenir SQL Injection"
    - "Implementar autenticação com Laravel Sanctum"
    - "Usar HTTPS em produção"
    - "Configurar CORS adequadamente"
  
  react:
    - "Sanitizar HTML com DOMPurify"
    - "Validar inputs no frontend"
    - "Usar HTTPS para APIs"
    - "Implementar CSRF protection"
    - "Não expor chaves de API no frontend"

# ===== TESTES =====
testing:
  laravel:
    unit_tests: "tests/Unit/"
    feature_tests: "tests/Feature/"
    coverage_threshold: 80
    commands:
      - "php artisan test"
      - "php artisan test --coverage"
      - "php artisan test --testsuite=Unit"
      - "php artisan test --testsuite=Feature"
  
  react:
    test_files: "__tests__/"
    coverage_threshold: 80
    commands:
      - "npm test"
      - "npm run test:coverage"
      - "npm run test:watch"

# ===== PERFORMANCE =====
performance:
  backend:
    - "Usar Eager Loading para evitar N+1 queries"
    - "Implementar cache para queries pesadas"
    - "Usar Redis para session e cache"
    - "Otimizar queries com indexes"
    - "Usar Queue Jobs para operações pesadas"
  
  frontend:
    - "Implementar Code Splitting"
    - "Usar React.memo para componentes"
    - "Otimizar imagens com WebP"
    - "Implementar lazy loading"
    - "Usar Service Workers para cache"

# ===== MONITORAMENTO =====
monitoring:
  tools:
    - "Laravel Telescope para debugging"
    - "Sentry para error tracking"
    - "New Relic para performance"
    - "LogRocket para frontend sessions"
  
  logging:
    - "Usar diferentes níveis de log (info, warning, error)"
    - "Implementar structured logging"
    - "Configurar log rotation"
    - "Monitorar performance metrics"

# ===== DEVOPS =====
devops:
  docker:
    - "Usar multi-stage builds"
    - "Otimizar layers do Docker"
    - "Usar .dockerignore"
    - "Configurar health checks"
  
  ci_cd:
    - "Implementar GitHub Actions"
    - "Executar testes automaticamente"
    - "Fazer deploy automático"
    - "Implementar rollback automático"

# ===== DOCUMENTAÇÃO =====
documentation:
  api_docs: "Usar Laravel API Resources"
  code_comments: "Comentários apenas quando necessário e em inglês"
  readme: "Manter README atualizado"
  changelog: "Documentar mudanças importantes"
  architecture: "Documentar arquitetura do sistema"

# ===== CHECKLIST DE QUALIDADE =====
quality_checklist:
  code_review:
    - "Código segue padrões estabelecidos"
    - "Todo código escrito em inglês"
    - "Comentários evitados ou em inglês"
    - "Testes unitários incluídos"
    - "Documentação atualizada"
    - "Performance considerada"
    - "Segurança validada"
    - "Acessibilidade verificada"
    - "Responsividade testada"
  
  before_commit:
    - "Executar testes"
    - "Verificar linting"
    - "Validar tipos TypeScript"
    - "Fazer build de produção"
    - "Revisar alterações"
    - "Usar mensagem de commit padronizada"

# ===== COMANDOS DE VERIFICAÇÃO RÁPIDA =====
quick_verification:
  structure_check: |
    # Verificar estrutura do backend
    find backend/app/Models -name "*.php" | head -10
    find backend/app/Http/Controllers/Api -name "*.php" | head -10
    grep -r "Route::" backend/routes/api.php
    
    # Verificar estrutura do frontend
    find frontend/src/pages -name "*.tsx" | head -10
    find frontend/src/components -name "*.tsx" | head -10
    find frontend/src/hooks -name "*.ts" | head -10
    find frontend/src/services -name "*.ts" | head -10
  
  build_validation: |
    # Backend
    php artisan test
    php artisan route:cache
    php artisan config:cache
    
    # Frontend
    npm run type-check
    npm run lint
    npm run build
    npm run preview

# ===== RESUMO RÁPIDO =====
quick_summary:
  critical_rules:
    - "Verificação inteligente antes de desenvolver"
    - "Código em inglês obrigatório"
    - "Build validation antes de commits"
    - "Padrões de commit padronizados"
    - "TypeScript validation obrigatório"
  
  most_used_commands:
    backend: "php artisan serve, php artisan migrate:fresh --seed, php artisan test"
    frontend: "npm run dev, npm run build, npm run validate:quick"
    docker: "docker-compose up -d, docker-compose down"
  
  naming_conventions:
    classes: "UserController, OrderService"
    methods: "createUser(), processOrder()"
    variables: "$userData, $orderTotal"
    interfaces: "UserInterface, OrderRepositoryInterface"
  
  quick_checklist:
    - "Verificação inteligente (backend + frontend)"
    - "Código em inglês"
    - "Build funcionando"
    - "Testes passando"
    - "Linting limpo"
    - "Commit com prefixo correto"
    - "Documentação atualizada"

📋 Checklist de Implementação

Antes de Usar

Durante a Implementação

Após a Implementação

🔄 Atualizações e Manutenção

Atualizações Regulares

Customizações

📚 Recursos Adicionais

Documentação Oficial

Ferramentas Recomendadas

Comunidade

🎯 Próximos Passos

Após implementar o .cursorrules:

1. Testar funcionalidade básica com Cursor AI 2. Customizar regras para seu domínio específico 3. Adicionar ferramentas específicas do projeto 4. Treinar equipe nos novos padrões 5. Monitorar eficiência e ajustar conforme necessário

📞 Suporte

Para dúvidas ou problemas:

📖 Este template foi criado seguindo as melhores práticas de desenvolvimento Laravel Senior e otimizado para máxima produtividade com Cursor AI.