Panel Admin GroupGarre
Panel de administración full-stack para GroupGarre — estado actual, arquitectura y pendientes
Panel Admin GroupGarre — admin.lucasgarre.com
Estado: ✅ LIVE EN PRODUCCIÓN (2026-03-31) URL: https://admin.lucasgarre.com (SSL activo, NPM cert ID 24)
Arquitectura
Stack
- Frontend: React 18 + TypeScript + Vite + Tailwind CSS
- Backend: Node.js + Express + TypeScript + JWT auth
- DB: PostgreSQL 16 (contenedor groupgarre-admin-db)
- Proxy: NPM → 100.126.176.115:4211 via Tailscale (proxy host ID 14)
Estructura en servidor (srv-principal 217.154.106.6)
/opt/groupgarre/admin/
├── frontend/src/ # React + Vite source
├── frontend/dist/ # Build compilado (servido por nginx)
├── backend/src/ # Express TypeScript source
├── backend/dist/ # JS compilado (node:20-alpine lo ejecuta)
├── nginx.conf # Proxy /api/ → backend:4210
└── docker-compose.yml
Contenedores Docker (red n8n_default)
| Nombre | Imagen | Puerto | Estado |
|---|---|---|---|
| groupgarre-admin-db | postgres:16-alpine | 5432 interno | ✅ running |
| groupgarre-admin-backend | node:20-alpine | 4210 | ✅ running |
| groupgarre-admin-frontend | nginx:alpine | 4211 | ✅ running |
Docker-compose comando backend
command: sh -c 'npm install --omit=dev && npm start'
IMPORTANTE: El backend se compila antes via docker run one-off con node:20-alpine. NODE_ENV=production skippea devDeps (TypeScript), por eso el comando no incluye build.
Para recompilar después de cambios en src/:
docker compose stop groupgarre-admin-backend
docker run --rm -v /opt/groupgarre/admin/backend:/app -w /app node:20-alpine sh -c 'npm install && ./node_modules/.bin/tsc'
docker compose up -d groupgarre-admin-backend
Credenciales
Panel admin
- Email: lucas@lucasgarre.com
- Contraseña: Adm1n_Gg4rr3_2025!
- Rol: admin
Base de datos
- DB: groupgarre_admin
- Usuario: admin_user
- Contraseña: Adm1n_Gg4rr3_2025!
NPM (srv-proxy 5.250.186.137)
- Email: lucasgarredev@hotmail.com
- Contraseña: Nokia5320@@ (reseteada manualmente en 2026-03-31)
Schema DB
users, clients, appointments, conversations -- ver descripción original
claude_accounts (NUEVO 2026-03-31):
id, name, type (teams/pro), description, session_data (TEXT - JSON credenciales),
is_active (bool), created_at, updated_at
Módulos implementados
- ✅ /login — JWT auth
- ✅ /dashboard — stats cards
- ✅ /clients — tabla + búsqueda + crear
- ✅ /appointments — lista citas Aria
- ✅ /conversations — historial WhatsApp
- ✅ /users — gestión usuarios panel
- ✅ /settings — Agente Aria, Cuentas Claude, DB, Perfil
Cuentas Claude (en Settings)
3 cuentas pre-cargadas en claude_accounts:
- Teams Principal (is_active=true) — cuenta activa actual
- Teams Backup (is_active=false)
- Pro (is_active=false)
Script de switch: C:\Users\lucas\switch-claude.ps1
- Llama a GET /api/claude-accounts/active-session con x-api-key: gg_switch_2025
- Escribe las credenciales en ~/.claude/.credentials.json
- Falta: capturar session_data de cada cuenta y guardarla en el panel
Pendientes para 2026-04-01
- Capturar session_data de las 3 cuentas Claude y subirlas al panel
- Probar switch-claude.ps1 end-to-end
- Integrar agente WhatsApp → POST /appointments y POST /conversations/ping desde n8n
- (Jueves) Instalar Claude Code en srv-principal para sesiones 24/7
Why: Lucas quiere panel CRM completo para GroupGarre y sistema de switch de cuentas Claude para no quedarse sin contexto. How to apply: Panel en producción. Para reanudar, consultar pendientes arriba.