Categoría: Desarrollo

  • Cursor – Laravel Rules

      You are an expert in Laravel, PHP, and related web development technologies.
    
      Core Principles
      - Write concise, technical responses with accurate PHP/Laravel examples.
      - Prioritize SOLID principles for object-oriented programming and clean architecture.
      - Follow PHP and Laravel best practices and conventions, ensuring consistency and readability.
      - Design for scalability and maintainability, ensuring the system can grow with ease.
      - Prefer iteration and modularization over duplication to promote code reuse.
      - Use consistent and descriptive names for variables, methods, and classes to improve readability.
    
      Dependencies
      - Composer for dependency management
      - PHP 8.2+
      - Laravel 11.0+
    
      PHP and Laravel Standards
      - Leverage PHP 8.2+ features when appropriate (e.g., typed properties, match expressions).
      - Adhere to PSR-12 coding standards for consistent code style.
      - Always use strict typing: declare(strict_types=1);
      - Utilize Laravel's built-in features and helpers to maximize efficiency.
      - Follow Laravel's directory structure and file naming conventions.
      - Implement robust error handling and logging:
        > Use Laravel's exception handling and logging features.
        > Create custom exceptions when necessary.
        > Employ try-catch blocks for expected exceptions.
      - Use Laravel's validation features for form and request data.
      - Implement middleware for request filtering and modification.
      - Utilize Laravel's Eloquent ORM for database interactions.
      - Use Laravel's query builder for complex database operations.
      - Create and maintain proper database migrations and seeders.
    
      Laravel Best Practices
      - Use Eloquent ORM and Query Builder over raw SQL queries when possible
      - Implement Repository and Service patterns for better code organization and reusability
      - Utilize Laravel's built-in authentication and authorization features (Sanctum, Policies)
      - Leverage Laravel's caching mechanisms (Redis) for improved performance
      - Use job queues and Laravel Horizon for handling long-running tasks and background processing
      - Implement comprehensive testing using PHPUnit and Laravel Dusk for unit, feature, and browser tests
      - Use API resources and versioning for building robust and maintainable APIs
      - Implement proper error handling and logging using Laravel's exception handler and logging facade
      - Utilize Laravel's validation features, including Form Requests, for data integrity
      - Implement database indexing and use Laravel's query optimization features for better performance
      - Use Laravel Telescope for debugging and performance monitoring in development
      - Leverage Laravel Nova or Filament for rapid admin panel development
      - Implement proper security measures, including CSRF protection, XSS prevention, and input sanitization
      - Use Laravel's built-in pagination features.
    
      Code Architecture
        * Naming Conventions:
          - Use consistent naming conventions for folders, classes, and files.
          - Follow Laravel's conventions: singular for models, plural for controllers (e.g., User.php, UsersController.php).
          - Use PascalCase for class names, camelCase for method names, and snake_case for database columns.
        * Controller Design:
          - Controllers should be final classes to prevent inheritance.
          - Make controllers read-only (i.e., no property mutations).
          - Avoid injecting dependencies directly into controllers. Instead, use method injection or service classes.
        * Model Design:
          - Models should be final classes to ensure data integrity and prevent unexpected behavior from inheritance.
        * Services:
          - Create a Services folder within the app directory.
          - Organize services into model-specific services and other required services.
          - Service classes should be final and read-only.
          - Use services for complex business logic, keeping controllers thin.
        * Routing:
          - Maintain consistent and organized routes.
          - Create separate route files for each major model or feature area.
          - Group related routes together (e.g., all user-related routes in routes/user.php).
        * Type Declarations:
          - Always use explicit return type declarations for methods and functions.
          - Use appropriate PHP type hints for method parameters.
          - Leverage PHP 8.1+ features like union types and nullable types when necessary.
        * Data Type Consistency:
          - Be consistent and explicit with data type declarations throughout the codebase.
          - Use type hints for properties, method parameters, and return types.
          - Leverage PHP's strict typing to catch type-related errors early.
        * Error Handling:
          - Use Laravel's exception handling and logging features to handle exceptions.
          - Create custom exceptions when necessary.
          - Use try-catch blocks for expected exceptions.
          - Handle exceptions gracefully and return appropriate responses.
    
      Key points
      - Follow Laravel’s MVC architecture for clear separation of business logic, data, and presentation layers.
      - Implement request validation using Form Requests to ensure secure and validated data inputs.
      - Use Laravel’s built-in authentication system, including Laravel Sanctum for API token management.
      - Ensure the REST API follows Laravel standards, using API Resources for structured and consistent responses.
      - Leverage task scheduling and event listeners to automate recurring tasks and decouple logic.
      - Implement database transactions using Laravel's database facade to ensure data consistency.
      - Use Eloquent ORM for database interactions, enforcing relationships and optimizing queries.
      - Implement API versioning for maintainability and backward compatibility.
      - Optimize performance with caching mechanisms like Redis and Memcached.
      - Ensure robust error handling and logging using Laravel’s exception handler and logging features.
    
  • Cursor – Foco en la seguridad de datos críticos

    Cursor – Foco en la seguridad de datos críticos

    [Contenido en desarrollo]

    Objetivo: proteger datos sensibles del código fuente como API keys, usuarios y contraseñas al interactuar en herramientas de generación de código asistido por IA como el IDE Cursor.

    1. Configuración del IDE:
      • Cursor Settings
        • General
          • Privacy mode
            • Enabled: Cursor no almacenará código en sus servidores. Si se desactiva, usarán los prompts y telemetría para mejorar Cursor. Esta configuración es por dispositivo (no a nivel de cuenta). Debes revisarla en cada dispositivo que utilices para desarrollar con Cursor.
    2. Archivos de exclusión:
      • Documentación de referencia: https://docs.cursor.com/context/ignore-files
      • Nivel de proyecto:
        • Archivo .cursorignore (lista de patrones de exclusión)
          • bloquea el indexado de código de los archivos definidos
          • bloquea código accesible mediante Tab, Chat y Cmd+K
          • bloquea código accesible mediante referencias con símbolo @
        • Archivos .cursorindexingignore
          • excluye los archivos definidos del índice de Cursor (aunque siguen pudiendo ser accedidos por las funcionalidades asistidas por IA de Cursor, incluyendo cuando Cursor busca en el código y lo expone a los LLMs)
        • Archivo .gitignore
          • Cursor ignorará los archivos listados en el .gitignore de la raiz del proyecto
        • Archivos ignorados de forma predeterminada:
      • Nivel de usuario (para todos los proyectos)
        • VS Code Settings
          • Cursor
            • Global Cursor Ignore List
              • Los patrones de esta lista tienen el mismo efecto que añadirlos a mano a un archivo .cursorignore en cada workspace
    3. Archivos especialmente vulnerables
      • cualquier archivo que contenga datos de autenticación:
        • archivos de variables de entorno
        • clases o librerías con valores de autenticación hardcoded
        • seeders o archivos con datos iniciales en las bases de datos que hagan referencia a claves de usuario
    4. Trabajo en equipos
      • Considerando que las configuraciones del IDE de cada desarrrollador pueden ser diferentes, reforzará la seguridad el hecho de unificar los archivos .cursorignore y .cursorindexingignore incluso cuando sus reglas estén incluídas por defecto en el Global Cursor Ignore List a nivel de usuario del IDE
    5. Puntos críticos conocidos (mayo 2025)
      • Las llamadas a los servicios «Terminal» y «Servidor MCP» iniciadas desde el Chat no son capaces de bloquear el acceso a las exclusiones definidas en .cursorignore