merca y ch
This commit is contained in:
99
README.md
Normal file
99
README.md
Normal file
@@ -0,0 +1,99 @@
|
||||
# Casa Benell - Dashboard ejecutivo
|
||||
|
||||
Dashboard en Next.js + TypeScript para Casa Benell, con base PostgreSQL para auth/roles/invitaciones.
|
||||
|
||||
## Stack
|
||||
- Next.js (App Router) + TypeScript
|
||||
- TailwindCSS
|
||||
- Recharts (Sankey)
|
||||
- Zustand (estado UI persistido en `localStorage`)
|
||||
- Prisma + PostgreSQL
|
||||
- NextAuth (credentials + adapter Prisma)
|
||||
- Nodemailer (SMTP invitations)
|
||||
|
||||
## Ejecutar
|
||||
```bash
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
Abre `https://benell.maliountech.com.mx`.
|
||||
|
||||
## Configuración backend (Fase 3/4)
|
||||
1. Crea tu archivo de entorno:
|
||||
```bash
|
||||
cp .env.example .env.local
|
||||
```
|
||||
2. Ajusta valores reales (DB, `NEXTAUTH_SECRET`, SMTP).
|
||||
Importante: define `APP_URL` con `https://benell.maliountech.com.mx` para enlaces por correo.
|
||||
3. Genera cliente Prisma y aplica migraciones:
|
||||
```bash
|
||||
npm run prisma:generate
|
||||
npm run prisma:migrate
|
||||
npm run prisma:seed
|
||||
```
|
||||
Para servidor (sin permisos de create database), usa:
|
||||
```bash
|
||||
npm run prisma:deploy
|
||||
```
|
||||
4. Inicia el proyecto:
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Build de producción:
|
||||
```bash
|
||||
npm run build
|
||||
npm run start
|
||||
```
|
||||
|
||||
## Sync automático Meta (Marketing) diario 06:00
|
||||
1. Define en `.env` o `.env.local`:
|
||||
```bash
|
||||
MARKETING_SYNC_CRON_SECRET="un-secreto-largo"
|
||||
INSTAGRAM_TOKEN="..."
|
||||
INSTAGRAM_USER_ID="..."
|
||||
```
|
||||
2. Instala unidades `systemd` (si despliegas con `systemd`):
|
||||
```bash
|
||||
sudo cp deploy/systemd/benell-marketing-sync.service /etc/systemd/system/
|
||||
sudo cp deploy/systemd/benell-marketing-sync.timer /etc/systemd/system/
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now benell-marketing-sync.timer
|
||||
```
|
||||
3. Verifica:
|
||||
```bash
|
||||
systemctl status benell-marketing-sync.timer
|
||||
systemctl list-timers | grep benell-marketing-sync
|
||||
```
|
||||
Nota: `OnCalendar=*-*-* 06:00:00` usa la zona horaria del servidor.
|
||||
|
||||
## Estructura relevante
|
||||
- `src/app`: rutas App Router (`/login`, `/dashboard`, `/financial-flow`, etc.)
|
||||
- `src/components`: shell y componentes UI reutilizables
|
||||
- `src/lib/mock`: datos mock tipados (`locations`, `departments`, `kpis`, `initiatives`, `meetings`, `people`)
|
||||
- `src/lib/store/ui-store.ts`: rol/filtros globales (persistidos)
|
||||
- `src/styles/tokens.ts`: tokens de diseño (paleta, radios, sombras, spacing)
|
||||
- `public/brand/logo.webp`, `public/brand/mascot.png`: assets de marca
|
||||
- `prisma/schema.prisma`: modelos DB (users, roles, user_roles, invitations, next-auth tables)
|
||||
- `src/app/api/invitations/route.ts`: crear invitaciones + envío SMTP
|
||||
- `src/app/api/invitations/accept/route.ts`: aceptar invitación y crear/actualizar usuario
|
||||
- `src/app/api/auth/register/route.ts`: crear cuenta y enviar verificación por correo
|
||||
- `src/app/api/auth/verify-email/route.ts`: validar token de verificación y activar login
|
||||
|
||||
## Estado UI (sin backend)
|
||||
- Rol de vista en topbar es informativo y se toma de la sesión autenticada (no editable en UI).
|
||||
- Filtros de rango de fecha y ubicación en topbar
|
||||
- Búsqueda global local para filtrar listas visibles
|
||||
|
||||
## Estado backend actual
|
||||
1. Login con credenciales reales desde PostgreSQL.
|
||||
2. Rutas de app protegidas con middleware (`/dashboard`, `/financial-flow`, etc).
|
||||
3. Rol en sesión (`owner|leader|employee`) como fuente de verdad para la UI.
|
||||
4. Invitaciones por email con token seguro hash + expiración + aceptación.
|
||||
5. Botón "Crear cuenta" y verificación de correo antes de login.
|
||||
6. Recuperación de contraseña por correo (`/forgot-password` + `/reset-password`).
|
||||
|
||||
## Pendiente
|
||||
1. Migrar KPIs y métricas mock a tablas reales.
|
||||
2. Agregar UI admin para listar/reenviar invitaciones.
|
||||
3. Fortalecer manejo de errores SMTP/DB en panel de configuración.
|
||||
Reference in New Issue
Block a user