Files
mexus-app/README.md
Mexus 86bfbd2039 feat: Initial commit - Mexus App
Sistema de Gestión de Obras de Construcción completo con:
- Dashboard con KPIs y gráficos
- Módulo de obras con fases y tareas
- Control financiero (gastos, presupuestos)
- Gestión de recursos (personal, subcontratistas)
- Inventario de materiales con alertas de stock
- Reportes con exportación CSV
- Autenticación con roles (NextAuth.js v5)
- API REST completa
- Documentación de API y base de datos
- Configuración Docker para despliegue

Stack: Next.js 14+, TypeScript, Tailwind CSS, Prisma, PostgreSQL

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 01:10:55 +00:00

242 lines
7.2 KiB
Markdown

# 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
```bash
git clone https://git.consultoria-as.com/tu-usuario/mexus-app.git
cd mexus-app
```
### 2. Instalar dependencias
```bash
npm install
```
### 3. Configurar variables de entorno
Crear archivo `.env` en la raíz del proyecto:
```env
# 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
```bash
# Crear las tablas
npx prisma migrate dev
# Poblar con datos de ejemplo (opcional)
npx prisma db seed
```
### 5. Iniciar el servidor de desarrollo
```bash
npm run dev
```
La aplicación estará disponible en `http://localhost:3000`
## Credenciales de Prueba
Si ejecutaste el seed, puedes usar estas credenciales:
| Email | 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
```bash
# 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
```bash
docker-compose up -d
```
### Producción
```bash
docker-compose -f docker-compose.prod.yml up -d
```
## API Endpoints
### Autenticación
- `POST /api/auth/callback/credentials` - Login
- `GET /api/auth/session` - Obtener sesión actual
- `POST /api/auth/signout` - Cerrar sesión
### Obras
- `GET /api/obras` - Listar obras
- `POST /api/obras` - Crear obra
- `GET /api/obras/[id]` - Obtener obra
- `PUT /api/obras/[id]` - Actualizar obra
- `DELETE /api/obras/[id]` - Eliminar obra
### Gastos
- `GET /api/gastos` - Listar gastos
- `POST /api/gastos` - Crear gasto
- `PUT /api/gastos/[id]` - Actualizar gasto
- `DELETE /api/gastos/[id]` - Eliminar gasto
- `PATCH /api/gastos/[id]/aprobar` - Aprobar gasto
### Materiales
- `GET /api/materiales` - Listar materiales
- `POST /api/materiales` - Crear material
- `PUT /api/materiales/[id]` - Actualizar material
- `DELETE /api/materiales/[id]` - Eliminar material
- `POST /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
1. Fork el repositorio
2. Crea una rama para tu feature (`git checkout -b feature/nueva-funcionalidad`)
3. Commit tus cambios (`git commit -m 'Agrega nueva funcionalidad'`)
4. Push a la rama (`git push origin feature/nueva-funcionalidad`)
5. 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