🧱 Arquitectura general
Mantek Manager está desarrollado como una aplicación web compuesta por un backend y un frontend separados, lo que permite una evolución independiente de cada parte del sistema.
🖥️ Backend Laravel 11
Section titled “🖥️ Backend ”El backend está construido con Laravel 11, pero sin depender de su estructura tradicional. En su lugar, se ha organizado en módulos independientes por dominio, cada uno representando una parte funcional del sistema.
Cada módulo sigue esta estructura:
Directorysrc/
DirectoryUser/
DirectoryDomain/
- …
DirectoryApplication/
- …
DirectoryInfrastructure/
- …
DirectoryRoutes/
- …
DirectoryRole/
- …
DirectoryMachine/
- …
DirectoryWorkOrder/
- …
- …
- Dominio: contiene entidades y contratos (interfaces) que representan la lógica esencial.
- Aplicación: incluye casos de uso (
UseCases
) y DTOs. - Infraestructura: implementa los contratos usando Eloquent, FormRequest, controladores…
- Mapper: traduce los datos entre capas, manteniendo el dominio desacoplado del framework.
Principios SOLID aplicados
Section titled “Principios SOLID aplicados”- Responsabilidad única: cada clase tiene una única responsabilidad.
- Abierto/cerrado: puedes añadir nuevas funcionalidades sin modificar las existentes.
- Inversión de dependencias: el dominio depende de contratos, no de implementaciones.
🌐 Frontend Nuxt 3 + TypeScript
Section titled “🌐 Frontend ”El frontend está desarrollado con Nuxt 3 y TypeScript, usando una arquitectura modular clara inspirada en la Screaming Architecture.
Directorysrc/
Directorymodules/
Directoryauth/
- …
Directoryuser/
- …
Directorymachine/
- …
Directorylocation/
- …
Directoryrole/
- …
- …
Características destacadas:
Section titled “Características destacadas:”- ✅ Arquitectura modular: cada carpeta representa una funcionalidad del sistema.
- 🎨 Tailwind CSS: para diseño responsivo y utilitario.
- 🧠 Pinia: para manejo del estado global (autenticación, usuario…).
- 🔄 TanStack Query: para sincronización con backend, caché y revalidaciones automáticas.
- ⚙️ Composables personalizados:
useHttpQuery()
yuseHttpRequest()
para estandarizar peticiones. - 🔒 Autenticación persistente: usando cookies o almacenamiento seguro en Pinia.
- 🧩 Componentes reutilizables: formularios dinámicos, modales (
DialogResponsive
), filtros (FilterCard
) y tablas con paginación. - 🧪 Testing: preparado para Vitest y futuro soporte de Playwright.
📡 Comunicación API REST + JSON
Section titled “📡 Comunicación ”Frontend y backend se comunican mediante una API REST protegida con Laravel Sanctum, intercambiando datos en formato JSON.