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>
This commit is contained in:
241
README.md
Normal file
241
README.md
Normal file
@@ -0,0 +1,241 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user