name: GymTec ERP Development description: Estándares y flujos de trabajo para el desarrollo en GymTec ERP (Node.js/Express + Alpine.js + MySQL). version: 1.0.0
GymTec ERP Developer Guide
Este skill encapsula las mejores prácticas y arquitecturas definidas para el proyecto GymTec ERP. Debes seguir estas guías al modificar o crear nuevo código.
1. Stack Tecnológico
Backend: Node.js con Express.
- Validación: OBLIGATORIO usar
Zodpara validar inputs en controladores (backend/src/middleware/validateResource.js). - Base de Datos: MySQL (usando driver
mysql2o adapter similar). - Módulos: Preferir estructura modular en
backend/src/modules/en lugar de agregar todo aserver-clean.js.
- Validación: OBLIGATORIO usar
Frontend: HTML5 + Vanilla JS + Alpine.js.
- Reactividad: Usar Alpine.js (
x-data,x-bind,x-model) para interactividad de UI. - Legacy: Evitar jQuery. Refactorizar Vanilla JS imperativo (selectores manuales
document.getElementById) a declarativo con Alpine cuando sea posible. - Estilos: TailwindCSS.
- Iconos: Lucide Icons (
data-lucide).
- Reactividad: Usar Alpine.js (
Infraestructura: Docker y Docker Compose para entorno local.
2. Convenciones de Código
Backend
- Rutas: Definir en
backend/src/routes/o módulos específicos. - Manejo de Errores: Retornar JSON con estructura
{ message: "error", error: "detalle" }. - Async/Await: Usar siempre en operaciones de BD.
Frontend
- Componentes Alpine:
- Definir lógica en archivos
.jsseparados usandoAlpine.data('nombreComponente', () => ({ ... })). - Inicializar en HTML con
x-data="nombreComponente()".
- Definir lógica en archivos
- Modales: Usar patrón
x-showcon transición para modales, controlados por variables booleanas (isOpen).
3. Base de Datos (MySQL)
- Tabla
InformesTecnicos:ticket_ides obligatorio.technician_idygenerated_bypueden ser NULL (no asumir valor por defecto).client_emaildebe validarse antes de insertar.
4. Flujo de Trabajo
- Validación: Siempre crear esquema Zod antes de tocar el endpoint.
- Implementación: Modificar código siguiendo patrón existente.
- Verificación: Usar
task_boundarypara documentar pruebas.
5. Recursos Comunes
window.authenticatedFetch: Usar para todas las llamadas al API (maneja tokens JWT).window.API_URL: Constante global para endpoints.