CRM web completo con autenticación, tracking de sesiones, roles de usuario y tabla CRM estilo Excel.
- Frontend: Next.js 14 (App Router) + TypeScript
- Backend: API Routes de Next.js
- Base de datos: PostgreSQL + Prisma ORM
- Autenticación: NextAuth.js v4 (JWT)
- Estilos: Tailwind CSS + Glassmorphism
git clone <tu-repositorio>
cd crm-app
npm installcp .env.example .envEdita .env con tus valores:
DATABASE_URL="postgresql://usuario:contraseña@localhost:5432/crm_db"
NEXTAUTH_SECRET="genera-uno-con: openssl rand -base64 32"
NEXTAUTH_URL="http://localhost:3000"Opción A — PostgreSQL local:
# Crea la base de datos
psql -U postgres -c "CREATE DATABASE crm_db;"
# Aplica el schema
npm run db:push
# Carga datos de demostración
npm run db:seedOpción B — Neon / Supabase / Railway (recomendado para producción):
- Crea una base de datos PostgreSQL en neon.tech (gratuito)
- Copia la connection string en
DATABASE_URL - Ejecuta
npm run db:push && npm run db:seed
npm run dev| Rol | Contraseña | |
|---|---|---|
| Admin | admin123@crm.com | admin123 |
| Demo | demo@crm.com | user123 |
- Sube el proyecto a GitHub
- Importa el repositorio en vercel.com
- Configura las variables de entorno en Vercel:
DATABASE_URL(usa Neon o Supabase)NEXTAUTH_SECRETNEXTAUTH_URL(tu dominio de Vercel, ej:https://mi-crm.vercel.app)
- El comando de build ya incluye
prisma generate:prisma generate && next build
crm-app/
├── prisma/
│ ├── schema.prisma # Modelos de base de datos
│ └── seed.ts # Datos iniciales
├── src/
│ ├── app/
│ │ ├── (auth)/ # Páginas de login, registro, recuperación
│ │ ├── (dashboard)/ # Páginas protegidas
│ │ │ ├── dashboard/ # Panel principal con stats
│ │ │ ├── crm/ # Tabla CRM editable
│ │ │ └── admin/ # Panel de administración
│ │ └── api/ # API Routes
│ │ ├── auth/ # NextAuth + forgot-password
│ │ ├── leads/ # CRUD de leads
│ │ ├── sessions/ # Tracking de sesiones
│ │ └── users/ # Gestión de usuarios
│ ├── components/
│ │ ├── crm/ # Tabla CRM con edición inline
│ │ ├── admin/ # Tablas de usuarios y sesiones
│ │ ├── layout/ # Sidebar y Header
│ │ └── ui/ # Componentes reutilizables
│ ├── lib/
│ │ ├── auth.ts # Configuración NextAuth
│ │ ├── db.ts # Cliente Prisma singleton
│ │ └── utils.ts # Utilidades (fechas, duración)
│ ├── types/
│ │ └── next-auth.d.ts # Extensión de tipos NextAuth
│ └── middleware.ts # Protección de rutas
- Registro, login, recuperación de contraseña
- JWT sessions con NextAuth
- Protección de rutas vía middleware
- Registro automático de inicio/fin de sesión
- Duración calculada automáticamente
- IP y User Agent almacenados
- 12 columnas editables con click-to-edit
- Guardado automático con debounce (600ms)
- Toggles para campos booleanos
- Búsqueda y ordenación por columnas
- Añadir/eliminar filas
- Estadísticas globales en tiempo real
- Gestión de usuarios (editar nombre, cambiar rol, eliminar)
- Log completo de sesiones con duración
- Visible solo para rol ADMIN
npm run dev # Servidor de desarrollo
npm run build # Build de producción
npm run db:push # Aplicar schema sin migraciones
npm run db:migrate # Crear migración y aplicar
npm run db:seed # Cargar datos de demostración
npm run db:studio # Abrir Prisma Studio (GUI)