# ![Koneko ERP](https://git.koneko.mx/koneko-st/koneko-st/raw/branch/main/logo-images/horizontal-05.png) Convenciones de Estructura de Componentes 📅 *Última actualización:* 2025-04-03 🔧 *Aplicable a todos los módulos Composer de Koneko ERP* --- ## 📁 Estructura General de un Componente ```plaintext component-root/ ├── config/ ← Configuraciones del módulo ├── Database/ │ ├── data/ ← Archivos JSON, CSV, XLSX │ ├── factories/ ← Factories para testing y seeders │ ├── migrations/ ← Migraciones del esquema del módulo │ └── Seeders/ ← Seeders base y de datos fake ├── Enums/ ← Enums (PSR-4) usados por el módulo ├── Events/ ← Eventos del módulo ├── Http/ │ ├── Controllers/ ← Controladores │ └── Middleware/ ← Middlewares específicos del módulo ├── Livewire/ ← Componentes Livewire organizados por dominio ├── Models/ ← Modelos Eloquent ├── Notifications/ ← Notificaciones personalizadas ├── Providers/ ← Service Providers del módulo ├── Services/ ← Servicios (lógica de negocio) ├── Support/ │ ├── Base/ ← Clases base abstractas │ ├── Builders/ ← Configuradores de vistas tipo índice │ ├── Macros/ ← Macros de Str, Collection, etc. │ ├── Queries/ ← Query Builders avanzados │ ├── Registries/ ← Registro dinámico de configuración │ └── Validation/ ← Validaciones personalizadas ├── Traits/ │ ├── Audit/ ← Traits para auditoría y tracking │ ├── Metadata/ ← Traits para metadatos del modelo │ ├── Users/ ← Traits relacionados con usuarios │ └── Indexing/ ← Traits usados por configuradores de índices ├── resources/ │ ├── assets/ ← JS, SCSS, íconos o fuentes específicos │ ├── faker-images/ ← Imágenes utilizadas en datos de prueba │ ├── lang/ ← Archivos de traducción │ └── views/ ← Vistas Blade ├── routes/ │ └── admin.php ← Rutas internas del módulo ├── storage/ ← Recursos adicionales (ej. fuentes) └── README.md ← Documentación del componente ``` --- ## 🧠 Convenciones Generales - Todos los módulos deben seguir PSR-4. - Los archivos deben nombrarse en *PascalCase* excepto `config/*.php` y rutas. - Los `Seeder` deben ser agrupados por módulo si el componente los agrupa (ej. `vuexyAdmin`, `vuexyWarehouse`). - Los `Factory` deben ser compatibles con `SeederWithFakeImages`. --- ## 🖼️ Imágenes Faker - Carpeta: `resources/faker-images/` - Subcarpetas válidas: `users/`, `stores/`, `products/`, etc. - Las imágenes se usan exclusivamente para entornos de testing/demostración. - Nunca se publican al frontend ni se exponen directamente. --- ## 🧪 Factories - Todas las `factories` deben estar en `Database/factories/`. - Si se extiende un modelo (`Koneko\VuexyAdmin\Models\User`), usar `new (User::class)` dinámico. - Compatible con `SeederOrchestrator` y `config/seeder.php`. --- ## 📊 Configuradores de Índice - Los index deben implementar `BaseModelIndexConfig` o su extensión. - Pueden usar Traits como `HandlesFactory`, `HandlesIndexColumns`, `HandlesQueryBuilder`, etc. - Se recomienda usar `Support/Builders/` para los configuradores y `Support/Registries/` si son extendibles. --- ## 📚 Traducciones - Usar `resources/lang/es/` con archivos separados por dominio (`auth.php`, `validation.php`, etc.). - `es_MX.json` puede usarse para traducciones inline. --- ## 📌 Tips - Si un componente tiene `Service`, `Seeder`, `Factory` y `Livewire`, deben estar todos organizados en sus carpetas respectivas. - La estructura del componente debe ser lo suficientemente clara para no depender de documentación externa. ---