# Instrucciones de Copilot para Proyectos Node.js con Fastify ## Requisitos de Proceso Importantes - SIEMPRE presenta un plan detallado y espera aprobación explícita antes de implementar cualquier cambio de código - No proceder con la implementación hasta recibir confirmación del usuario - Al presentar el plan, proporciona un desglose paso a paso de todos los archivos a crear o modificar - Pregunta directamente: "¿Apruebas este plan antes de proceder con la implementación?" ## Convenciones de Nomenclatura Node.js/JavaScript ### Patrones Generales de Nomenclatura | Tipo de Elemento | Patrón/Estilo | Ejemplo(s) | |------------------|---------------|------------| | **Variables/Funciones** | `camelCase` | `userName`, `getUserById()` | | **Constantes** | `SCREAMING_SNAKE_CASE` | `MAX_RETRY_ATTEMPTS`, `API_BASE_URL` | | **Clases** | `PascalCase` | `UserService`, `DatabaseConnection` | | **Archivos** | `kebab-case` | `user-service.js`, `auth-middleware.js` | | **Carpetas** | `kebab-case` | `user-management/`, `api-routes/` | | **Propiedades JSON** | `camelCase` | `firstName`, `createdAt` | ## Estructura de Proyecto Fastify ``` src/ ├── app.js # Configuración principal de Fastify ├── server.js # Punto de entrada ├── config/ │ ├── database.js │ ├── environment.js │ └── logger.js ├── routes/ │ ├── users/ │ ├── auth/ │ └── index.js ├── services/ │ ├── user-service.js │ └── auth-service.js ├── models/ │ ├── user.js │ └── index.js ├── middleware/ │ ├── auth.js │ └── validation.js ├── utils/ │ ├── helpers.js │ └── constants.js └── tests/ ├── unit/ └── integration/ ``` ## Configuración Fastify Básica ### app.js Principal ```javascript const fastify = require('fastify')({ logger: true }); // Registrar plugins fastify.register(require('@fastify/cors')); fastify.register(require('@fastify/helmet')); fastify.register(require('@fastify/rate-limit')); // Registrar rutas fastify.register(require('./routes')); module.exports = fastify; ``` ## Mejores Prácticas ### Desarrollo con Fastify - Usar **schemas JSON** para validación automática - Implementar **hooks** para lógica transversal - Usar **plugins** para modularidad - Configurar **logging** estructurado - Implementar **rate limiting** y **CORS** ### Código JavaScript/Node.js - Usar **async/await** en lugar de callbacks - Implementar **error handling** consistente - Usar **ESLint** y **Prettier** para código limpio - Aplicar **destructuring** cuando sea apropiado - Usar **template literals** para strings complejas ### Performance y Seguridad - Validar todas las entradas con **schemas** - Usar **helmet** para headers de seguridad - Implementar **authentication** y **authorization** - Configurar **compression** para respuestas - Usar **clustering** para aprovechar múltiples cores