a08e7057e84db7de34ddab38983407d83ebd45c7
- Mejora 5: Órdenes de Compra integration in obra detail - Mejora 6: Portal de Cliente with JWT auth for clients - Mejora 7: Diagrama de Gantt for project visualization - Mejora 8: Push Notifications with service worker - Mejora 9: Activity Log system with templates - Mejora 10: PWA support with offline capabilities New features include: - Fotos gallery with upload/delete - Bitácora de obra with daily logs - PDF export for reports, gastos, presupuestos - Control de asistencia for employees - Client portal with granular permissions - Gantt chart with task visualization - Push notification system - Activity timeline component - PWA manifest, icons, and install prompt Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Mexus App - Sistema de Gestión de Obras de Construcción
Sistema integral para la gestión de obras de construcción, desarrollado con Next.js 14+, diseñado para empresas constructoras que necesitan administrar proyectos, finanzas, recursos e inventario.
Características Principales
Módulos del Sistema
| Módulo | Descripción |
|---|---|
| Dashboard | Panel principal con KPIs, gráficos de avance y resumen financiero |
| Obras | Gestión completa de proyectos de construcción con fases y tareas |
| Finanzas | Control de gastos, presupuestos y flujo de caja |
| Recursos | Administración de personal y subcontratistas |
| Inventario | Control de materiales con alertas de stock bajo |
| Reportes | Generación de reportes con exportación a CSV |
Funcionalidades Destacadas
- Autenticación segura con NextAuth.js v5
- Control de acceso por roles (Admin, Gerente, Supervisor, Contador, Empleado)
- Multi-empresa - Cada usuario pertenece a una empresa
- Dashboard interactivo con gráficos Recharts
- Alertas automáticas de stock bajo en inventario
- Registro de movimientos de inventario (entradas/salidas)
- Responsive design con Tailwind CSS y shadcn/ui
Stack Tecnológico
| Tecnología | Versión | Uso |
|---|---|---|
| Next.js | 14.2.x | Framework React con App Router |
| TypeScript | 5.x | Tipado estático |
| Tailwind CSS | 3.4.x | Estilos utilitarios |
| shadcn/ui | - | Componentes UI |
| Prisma | 5.22.x | ORM para PostgreSQL |
| PostgreSQL | 15+ | Base de datos |
| NextAuth.js | 5.x (beta) | Autenticación |
| Recharts | 2.x | Gráficos y visualizaciones |
| Zod | 3.x | Validación de esquemas |
Requisitos Previos
- Node.js 20.x o superior
- PostgreSQL 15 o superior
- npm o yarn
Instalación
1. Clonar el repositorio
git clone https://git.consultoria-as.com/tu-usuario/mexus-app.git
cd mexus-app
2. Instalar dependencias
npm install
3. Configurar variables de entorno
Crear archivo .env en la raíz del proyecto:
# Base de Datos
DATABASE_URL="postgresql://usuario:password@localhost:5432/construccion_db?schema=public"
# NextAuth.js
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="tu-secret-key-segura-aqui"
# Node Environment
NODE_ENV="development"
4. Configurar base de datos
# Crear las tablas
npx prisma migrate dev
# Poblar con datos de ejemplo (opcional)
npx prisma db seed
5. Iniciar el servidor de desarrollo
npm run dev
La aplicación estará disponible en http://localhost:3000
Credenciales de Prueba
Si ejecutaste el seed, puedes usar estas credenciales:
| Contraseña | Rol | |
|---|---|---|
| admin@demo.com | admin123 | ADMIN |
Estructura del Proyecto
construccion-app/
├── prisma/
│ ├── schema.prisma # Modelos de datos
│ └── seed.ts # Datos de ejemplo
├── src/
│ ├── app/
│ │ ├── (auth)/ # Páginas de autenticación
│ │ │ ├── login/
│ │ │ └── registro/
│ │ ├── (dashboard)/ # Área principal protegida
│ │ │ ├── dashboard/ # Panel principal
│ │ │ ├── obras/ # Gestión de obras
│ │ │ ├── finanzas/ # Control financiero
│ │ │ ├── recursos/ # Personal y recursos
│ │ │ │ ├── materiales/ # Inventario
│ │ │ │ └── personal/ # Empleados
│ │ │ └── reportes/ # Reportes
│ │ └── api/ # API Routes
│ │ ├── auth/ # NextAuth endpoints
│ │ ├── obras/ # CRUD obras
│ │ ├── gastos/ # CRUD gastos
│ │ └── materiales/ # CRUD materiales
│ ├── components/
│ │ ├── ui/ # Componentes shadcn/ui
│ │ └── layout/ # Sidebar, Header
│ ├── lib/
│ │ ├── auth.ts # Configuración NextAuth
│ │ ├── prisma.ts # Cliente Prisma
│ │ ├── utils.ts # Utilidades
│ │ └── validations.ts # Esquemas Zod
│ ├── hooks/ # Custom React hooks
│ └── types/ # TypeScript types
├── docker-compose.yml # Configuración Docker
├── Dockerfile # Build de producción
└── nginx.conf # Configuración Nginx
Comandos Disponibles
# Desarrollo
npm run dev # Inicia servidor de desarrollo
npm run build # Compila para producción
npm run start # Inicia servidor de producción
npm run lint # Ejecuta ESLint
# Base de datos
npx prisma migrate dev # Ejecuta migraciones en desarrollo
npx prisma migrate deploy # Ejecuta migraciones en producción
npx prisma db seed # Ejecuta el seed
npx prisma studio # Abre el explorador de BD
npx prisma generate # Regenera el cliente Prisma
Despliegue con Docker
Desarrollo
docker-compose up -d
Producción
docker-compose -f docker-compose.prod.yml up -d
API Endpoints
Autenticación
POST /api/auth/callback/credentials- LoginGET /api/auth/session- Obtener sesión actualPOST /api/auth/signout- Cerrar sesión
Obras
GET /api/obras- Listar obrasPOST /api/obras- Crear obraGET /api/obras/[id]- Obtener obraPUT /api/obras/[id]- Actualizar obraDELETE /api/obras/[id]- Eliminar obra
Gastos
GET /api/gastos- Listar gastosPOST /api/gastos- Crear gastoPUT /api/gastos/[id]- Actualizar gastoDELETE /api/gastos/[id]- Eliminar gastoPATCH /api/gastos/[id]/aprobar- Aprobar gasto
Materiales
GET /api/materiales- Listar materialesPOST /api/materiales- Crear materialPUT /api/materiales/[id]- Actualizar materialDELETE /api/materiales/[id]- Eliminar materialPOST /api/materiales/movimiento- Registrar movimiento de inventario
Roles y Permisos
| Rol | Descripción | Permisos |
|---|---|---|
| ADMIN | Administrador | Acceso completo |
| GERENTE | Gerente de proyectos | Gestión de obras y finanzas |
| SUPERVISOR | Supervisor de obra | Registro de avances y gastos |
| CONTADOR | Contador | Gestión financiera |
| EMPLEADO | Empleado general | Solo lectura |
Seguridad
- Autenticación mediante JWT con NextAuth.js
- Middleware de protección de rutas
- Validación de datos con Zod en cliente y servidor
- Filtrado de datos por empresa (multi-tenant)
- Contraseñas hasheadas con bcrypt
- Headers de seguridad configurados
Contribuir
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -m 'Agrega nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
Licencia
Este proyecto es privado y de uso interno.
Soporte
Para soporte técnico, contactar al equipo de desarrollo.
Desarrollado con Next.js y TypeScript
Description
Languages
TypeScript
98.8%
JavaScript
0.9%
CSS
0.2%
Dockerfile
0.1%