Live Production: https://oroazul.maat.work
Sistema de gestión integral para natatorios y piscinas. Administra clientes, asistentes, pagos, facturación y WhatsApp en una única plataforma.
| Category | Technology |
|---|---|
| Framework | Next.js 15.5 + React 19 (App Router) |
| Language | TypeScript 5 |
| Database | PostgreSQL via Neon (serverless) |
| ORM | Prisma 6 |
| Auth | NextAuth v4 (Credentials + JWT) |
| UI | shadcn/ui + Tailwind CSS 4 |
| State | Zustand + TanStack Query |
| Forms | React Hook Form + Zod |
| Animation | Framer Motion 12 |
| Deployment | Vercel |
| Module | Description |
|---|---|
| Dashboard | Estadísticas en tiempo real, clientes recientes, pagos pendientes |
| CRM Clientes | Perfiles completos, grupos, historial de asistencia y pagos |
| Asistencias | Control diario con registro de entrada/salida por empleado |
| Pagos | Suscripciones mensuales, estados de pago, recordatorios |
| Facturación | Gestión de facturas con archivos adjuntos (almacenamiento en PostgreSQL) |
| Integración webhook para automatizaciones | |
| Empleados | Control de horario con reloj de punto |
| Gastos | Registro de gastos del negocio |
| Calendario | Eventos y programación de clases |
# 1. Clonar y entrar al directorio
git clone https://github.com/Gigisanta/nms.git
cd nms
# 2. Instalar dependencias
npm install
# 3. Configurar variables de entorno
cp .env.example .env
# Editar .env con tus credenciales
# 4. Iniciar servidor de desarrollo
npm run devAbre http://localhost:3000 en tu navegador.
Crea un archivo .env en la raíz del proyecto:
# Base de datos (Neon PostgreSQL)
DATABASE_URL="postgresql://user:password@host/database?sslmode=require"
# NextAuth
NEXTAUTH_SECRET="genera-32-caracteres-minimo"
NEXTAUTH_URL="http://localhost:3000"- Neon: https://neon.tech → New Project → copia el connection string
- NEXTAUTH_SECRET: Genera con
openssl rand -base64 32
# Desarrollo
npm run dev # Servidor dev en puerto 3000
npm run lint # Verificar código con ESLint
# Base de datos
npm run db:push # Push schema (sin migración)
npm run db:generate # Generar cliente Prisma
npm run db:migrate # Crear migración (desarrollo)
npm run db:seed # Poblar con datos de prueba
# Build
npm run build # Build estándar Next.js
npm run build:standalone # Build standalone para Vercel
npm run start # Iniciar producción| Password | Rol | |
|---|---|---|
| mariela@nms.com | mariela123 | EMPLEADORA (Admin) |
| tomas@nms.com | tomas123 | EMPLEADO |
| Doc | Description |
|---|---|
| CLAUDE.md | Guía para agentes de código |
| docs/ARCHITECTURE.md | Arquitectura del sistema |
| docs/API.md | Endpoints REST |
| docs/DATABASE.md | Esquema de base de datos |
| docs/VERCEL.md | Deployment en Vercel |
src/
├── app/
│ ├── (auth)/ # Login, register
│ ├── api/ # API routes (serverless)
│ ├── layout.tsx # Layout raíz
│ └── page.tsx # SPA entry point
├── components/
│ ├── ui/ # shadcn/ui components
│ ├── modules/ # Vistas de negocio (lazy-loaded)
│ └── layout/ # Sidebar, header, etc.
├── lib/
│ ├── db.ts # Cliente Prisma singleton
│ ├── auth.ts # Configuración NextAuth
│ └── api-utils.ts # Utilidades API
├── store/ # Estado Zustand
├── schemas/ # Esquemas Zod
└── types/ # Tipos TypeScript
El proyecto está configurado para deploy automático en Vercel:
- Push a GitHub → Vercel detecta y despliega
- Build command ejecuta:
npx prisma@6.11.1 migrate deploy→npx prisma@6.11.1 generate→next build - Production URL: https://oroazul.maat.work
Desarrollado con ❤️ para la gestión eficiente de natatorios