Panel generadores.ar
Panel de administracion interno para KOR Generadores
Acceso
| URL | panel.generadores.ar |
| Auth | Google OAuth2 (solo ivankorzy@gmail.com) |
| Repo | github.com/ivankorzy25/panel-generadores (privado) |
Stack Tecnologico
Frontend
- React 19 + TypeScript
- Vite 6 (build)
- Tailwind CSS 3
- React Router 7
- Recharts 2 (graficos)
- Lucide React (iconos)
Backend / API
- Cloudflare Workers
- TypeScript + Wrangler 3
- JWT (HS256) en cookies HttpOnly
- Cloudflare REST + GraphQL API
Herramientas Disponibles
| Tool | Ruta | Descripcion |
|---|---|---|
| Barrios | /tools/barrios | 440+ barrios privados CABA/GBA con tracking, export CSV/KML |
| Contactos | /tools/contactos | CRM unificado: 2,834 contactos de StelOrder, WhatsApp, Odoo, ERPNext |
| OpenClaw AI | /tools/openclaw | Chat IA con Kimi K2.5 via Ollama |
| ML Publisher | /tools/ml-publisher | Publicador MercadoLibre con IA |
| Notas | /tools/notas | Notas rapidas estilo Google Keep (localStorage) |
| Anura Central | /tools/anura | Central telefonica cloud: llamadas, perdidas, grabaciones, bloqueo |
| Bot STEL | /tools/botstel | Dashboard unificado STEL Order + ERPNext |
| AWS EC2 | /tools/aws | Monitoreo EC2: CPU, RAM, disco, Docker, creditos |
| ERPNext | /tools/erpnext | ERP completo: productos, ventas, stock, contabilidad |
| Docs | /tools/docs | Esta documentacion |
Infraestructura
| Modulo | Ruta | Descripcion |
|---|---|---|
| DNS | /dns | Gestion de registros DNS en Cloudflare |
| Workers | /workers | Lista de Cloudflare Workers |
| Pages | /pages | Proyectos Cloudflare Pages |
| Cache | /cache | Purgar cache por URL o completo |
Ultima actualizacion: 13 de marzo 2026
Arquitectura
Como esta armado el sistema
Diagrama General
Usuario (browser)
|
v
panel.generadores.ar (Cloudflare Pages - React SPA)
|
v /api/*
panel-api (Cloudflare Worker)
|
+---> Cloudflare API (DNS, Analytics, Workers, Pages, Cache)
+---> Google OAuth2 (autenticacion)
+---> aws.generadores.ar/health (monitoreo EC2)
+---> Servicios internos via Cloudflare Tunnel
|
+---> 192.168.100.10:8097 (anura-bot)
+---> 192.168.100.10:8098 (server-health)
+---> ERPNext, Bot STEL, etc.
Estructura del Proyecto
panel-generadores/
├── frontend/
│ ├── src/
│ │ ├── App.tsx # Rutas
│ │ ├── components/
│ │ │ ├── Layout.tsx # Layout principal
│ │ │ ├── Sidebar.tsx # Navegacion lateral
│ │ │ └── ... # Charts, tables, cards
│ │ ├── pages/ # Una pagina por herramienta
│ │ │ ├── AWS.tsx
│ │ │ ├── Anura.tsx
│ │ │ ├── Barrios.tsx
│ │ │ └── ...
│ │ ├── hooks/ # useAuth, useCFAnalytics
│ │ └── lib/api.ts # Cliente API
│ ├── package.json
│ └── vite.config.ts
├── worker/
│ ├── src/index.ts # Todos los endpoints
│ └── wrangler.toml # Config CF Worker
├── CLAUDE.md # Documentacion para IA
└── package.json # Monorepo root
Cloudflare Tunnel
Tunnel kor-generadores conecta servicios locales (192.168.100.10) con dominios publicos via Cloudflare.
| Dominio | Servicio | Puerto |
|---|---|---|
| aws.generadores.ar | server-health | 8098 |
| anura.generadores.ar | anura-bot | 8097 |
| erpnext.generadores.ar | ERPNext | 8080 |
Servicios Docker en EC2
| Servicio | Puerto | Descripcion |
|---|---|---|
| server-health | 8098 | Health check del servidor (CPU, RAM, disco, Docker) |
| anura-bot | 8097 | Monitoreo Anura con polling y dashboard |
| cloudflared | - | Tunnel Cloudflare para exponer servicios |
Ultima actualizacion: 13 de marzo 2026
Deploy
Como desplegar cambios al panel
Frontend (Cloudflare Pages)
cd frontend
npm run build
CLOUDFLARE_API_KEY=$CF_API_KEY CLOUDFLARE_EMAIL=ivankorzy@gmail.com \
npx wrangler pages deploy dist --project-name=panel-generadores
Worker / API (Cloudflare Workers)
cd worker
CLOUDFLARE_API_KEY=$CF_API_KEY CLOUDFLARE_EMAIL=ivankorzy@gmail.com \
npx wrangler deploy
Git (backup)
# Despues de cada cambio
git add -A
git commit -m "descripcion del cambio"
git push origin main
Flujo Completo Recomendado
- Hacer cambios en el codigo
npm run build- verificar que compila sin erroresgit diff- verificar que no se quito nada existentegit commit- guardar backup- Desplegar worker (si hubo cambios en API)
- Desplegar frontend
git push- subir a GitHub
Servicios Docker (servidor local)
# SSH al servidor
ssh ivan@192.168.100.10
# Rebuild de un servicio
cd /ruta/al/servicio
docker compose up -d --build
Configuracion Cloudflare
| Zone ID | 1be80aaf510341ea8ff0713fdf8dd267 |
| Account ID | dae7c94b2e08aea997c40a64d047bd08 |
| Worker | panel-api |
| Pages project | panel-generadores |
| Docs project | docs-generadores |
Ultima actualizacion: 13 de marzo 2026
Barrios Privados
Base de datos de 440+ barrios y countries de CABA y GBA
Funcionalidades
- Listado completo con busqueda y filtros por zona
- Tracking de estado comercial (contactado, interesado, cliente, etc.)
- Export CSV y KML (para Google Maps/Earth)
- Integracion con Google Maps para ubicacion
- Datos: nombre, direccion, localidad, zona, contacto, telefono, email
Acceso
| Panel | /tools/barrios |
| Componente | frontend/src/pages/Barrios.tsx |
Ultima actualizacion: 13 de marzo 2026
Contactos CRM
2,834 contactos unificados de multiples fuentes
Fuentes de Datos
- StelOrder - Clientes del sistema de facturacion
- WhatsApp - Contactos de conversaciones
- Odoo - CRM anterior
- ERPNext - ERP actual
Funcionalidades
- Busqueda por nombre, empresa, telefono, email
- Filtros por fuente de datos
- Chat con IA para consultas sobre contactos
- Vista unificada sin duplicados
Acceso
| Panel | /tools/contactos |
| Componente | frontend/src/pages/Contactos.tsx |
Ultima actualizacion: 13 de marzo 2026
OpenClaw AI
Asistente IA con Kimi K2.5 via Ollama
Funcionalidades
- Chat conversacional con modelo Kimi K2.5
- Integracion con WhatsApp y Telegram
- AWS Gateway para acceso remoto
- Contexto personalizado para generadores.ar
Infraestructura
- Modelo: Kimi K2.5 (via Ollama Cloud)
- Gateway: AWS API Gateway
- Canales: Web, WhatsApp, Telegram
Acceso
| Panel | /tools/openclaw |
| Componente | frontend/src/pages/OpenClaw.tsx |
Ultima actualizacion: 13 de marzo 2026
ML Publisher
Publicador inteligente para MercadoLibre
Funcionalidades
- Generacion automatica de publicaciones con IA
- Respuestas automaticas a preguntas de compradores
- Sincronizacion de precios desde ERPNext
- Gestion de stock y variantes
Acceso
| Panel | /tools/ml-publisher |
| Componente | frontend/src/pages/MLPublisher.tsx |
Ultima actualizacion: 13 de marzo 2026
Notas Rapidas
Notas estilo Google Keep con almacenamiento local
Funcionalidades
- Crear, editar y eliminar notas
- Colores personalizados por nota
- Fijar notas importantes (pin)
- Busqueda por contenido
- Vista grilla o lista
Almacenamiento
Las notas se guardan en localStorage del navegador. No hay backend ni sincronizacion entre dispositivos.
Acceso
| Panel | /tools/notas |
| Componente | frontend/src/pages/Notas.tsx |
Ultima actualizacion: 13 de marzo 2026
Anura Central
Central telefonica cloud PBX argentina
Funcionalidades
- Historial - Todas las llamadas con fecha, hora, numeros, duracion, precio en ARS, grabaciones
- Perdidas - Llamadas no atendidas (estados CANCEL, NO ANSWER)
- Cuentas - Cuentas Anura activas con extensiones
- Agenda - Contactos de la central
- Bloqueados - Bloqueo de numeros no deseados por cuenta
- Log - Registro de actividad del bot
- Filtros por rango de fecha (Desde/Hasta)
API Anura
| Base URL | https://api.anura.com.ar/GCAPI/rest |
| SSO | https://sso.anura.com.ar/auth/realms/anura/protocol/openid-connect/token |
| Auth | OAuth2 (refresh_token → access_token) |
| Header | Anura-AccountId requerido para endpoints por cuenta |
| CDR dialTime | Epoch en milisegundos (ej: 1773407712796) |
| Swagger | https://api.anura.com.ar:443/GCAPI/docs/swagger_ar_prod.json |
Microservicio (anura-bot)
| Ubicacion | D:\1000-IA LOCAL\anura-bot\ |
| Servidor | 192.168.100.10:8097 |
| Stack | FastAPI + APScheduler + Docker |
| Dominio | anura.generadores.ar (via tunnel) |
Archivos clave
app.py- Backend FastAPI con polling de CDRs y endpointsanura_api.py- Cliente OAuth2 para la API de Anuratemplates/index.html- Dashboard HTML con tabsdocker-compose.yml- Config Docker (puerto 8097:8000)
Acceso
| Panel | /tools/anura |
| Componente | frontend/src/pages/Anura.tsx |
Ultima actualizacion: 13 de marzo 2026
Bot STEL
Dashboard unificado STEL Order + ERPNext
Funcionalidades
- Integracion STEL Order y ERPNext
- Reportes unificados
- Chat IA para consultas
- Gestion de proyectos
- Cache inteligente
- Puente con Odoo
Acceso
| Panel | /tools/botstel |
| Componente | frontend/src/pages/BotStel.tsx |
Ultima actualizacion: 13 de marzo 2026
AWS EC2
Monitoreo en tiempo real de la instancia EC2
Metricas
- Creditos - Saldo restante, costo/hora, costo/dia, fecha estimada de agotamiento
- CPU - Load average 1m/5m/15m, cantidad de cores
- RAM - Total, usada, disponible, porcentaje con barra de progreso
- Swap - Total, usado, porcentaje
- Disco - Total, usado, libre, porcentaje
- Docker - Tabla con todos los containers (nombre, estado, imagen, CPU, memoria, red)
- Instancia - ID, tipo, region, IP, disco, AMI, key pair, uptime, boot time
Instancia EC2
| ID | i-00de61555b63eddf5 |
| Tipo | t3.small (2 vCPU, 2 GB RAM) |
| Region | sa-east-1 (Sao Paulo) |
| IP | 18.231.111.36 |
| Disco | 30 GB gp3 |
| OS | Ubuntu 24.04 LTS |
| Creditos | $100 USD @ $0.026/hr (desde 2026-03-13) |
Microservicio (server-health)
| Ubicacion | D:\1000-IA LOCAL\server-health\ |
| Servidor | 192.168.100.10:8098 |
| Stack | FastAPI + Docker (python:3.12-slim) |
| Dominio | aws.generadores.ar (via tunnel) |
| Endpoint | GET /health |
Como funciona
- Lee
/host/proc(montado desde el host) para uptime, CPU load, memoria - Ejecuta
docker statsydocker psvia socket montado - Calcula creditos AWS restantes basado en horas transcurridas
Cadena de datos
panel.generadores.ar/tools/aws (React)
→ Worker /api/aws/health
→ aws.generadores.ar/health (Cloudflare Tunnel)
→ 192.168.100.10:8098 (server-health container)
→ /host/proc + docker stats
Auto-refresh
La pagina se actualiza automaticamente cada 60 segundos. Tambien tiene boton de refresh manual.
Acceso
| Panel | /tools/aws |
| Componente | frontend/src/pages/AWS.tsx |
| Links | ERPNext, Console AWS, Billing AWS |
Ultima actualizacion: 13 de marzo 2026
ERPNext
ERP completo en AWS
Funcionalidades
- Gestion de productos y stock
- Ventas y facturacion
- Contabilidad
- CRM integrado
- Webshop (v16)
Acceso
| Panel | /tools/erpnext |
| Directo | erpnext.generadores.ar |
| Componente | frontend/src/pages/ERPNext.tsx |
Ultima actualizacion: 13 de marzo 2026
DNS
Gestion de registros DNS en Cloudflare
Funcionalidades
- Listar todos los registros DNS del dominio generadores.ar
- Editar registros existentes (tipo, nombre, contenido, TTL, proxy)
- Eliminar registros
API
| Endpoint | Metodo | Descripcion |
|---|---|---|
/api/dns/records | GET | Listar registros |
/api/dns/records/:id | PUT | Editar registro |
/api/dns/records/:id | DELETE | Eliminar registro |
Acceso
| Panel | /dns |
| Componente | frontend/src/pages/DNS.tsx |
Ultima actualizacion: 13 de marzo 2026
Workers
Cloudflare Workers activos
Funcionalidades
- Lista de todos los Workers desplegados en la cuenta
- Informacion de cada worker: nombre, estado, fecha de creacion
Acceso
| Panel | /workers |
| Componente | frontend/src/pages/Workers.tsx |
Ultima actualizacion: 13 de marzo 2026
Pages
Proyectos Cloudflare Pages
Funcionalidades
- Lista de todos los proyectos Pages desplegados
- Informacion: nombre, URL, ultimo deploy, estado
Proyectos Activos
- panel-generadores - Este panel (panel.generadores.ar)
- docs-generadores - Esta documentacion (docs.generadores.ar)
Acceso
| Panel | /pages |
| Componente | frontend/src/pages/Pages.tsx |
Ultima actualizacion: 13 de marzo 2026
Cache
Gestion de cache en Cloudflare
Funcionalidades
- Purgar todo - Limpiar toda la cache del dominio
- Purgar URLs - Limpiar cache de URLs especificas (max 30)
API
| Endpoint | Metodo | Descripcion |
|---|---|---|
/api/cache/purge-all | POST | Purgar toda la cache |
/api/cache/purge-urls | POST | Purgar URLs (body: {urls: [...]}) |
Acceso
| Panel | /cache |
| Componente | frontend/src/pages/Cache.tsx |
Ultima actualizacion: 13 de marzo 2026
Cloudflare Tunnel
Conexion segura entre servicios locales y dominios publicos
Tunnel Info
| Nombre | kor-generadores |
| ID | 7e2b91c9-bdcf-4b7d-98a8-909098eb3007 |
| Servidor | 192.168.100.10 (ivan@) |
Rutas Configuradas
| Hostname | Servicio |
|---|---|
| aws.generadores.ar | http://localhost:8098 |
| anura.generadores.ar | http://localhost:8097 |
| erpnext.generadores.ar | http://localhost:8080 |
Config DNS
Cada hostname necesita un CNAME apuntando al tunnel:
CNAME aws.generadores.ar → 7e2b91c9-bdcf-4b7d-98a8-909098eb3007.cfargotunnel.com
CNAME anura.generadores.ar → 7e2b91c9-bdcf-4b7d-98a8-909098eb3007.cfargotunnel.com
CNAME erpnext.generadores.ar → 7e2b91c9-bdcf-4b7d-98a8-909098eb3007.cfargotunnel.com
Gestion
# Ver estado
ssh ivan@192.168.100.10 "docker ps | grep cloudflared"
# Reiniciar
ssh ivan@192.168.100.10 "docker restart cloudflared"
# Ver config
ssh ivan@192.168.100.10 "cat /etc/cloudflared/config.yml"
Ultima actualizacion: 13 de marzo 2026
Autenticacion
Google OAuth2 + JWT
Flujo de Login
- Usuario hace click en "Iniciar sesion con Google"
- Frontend redirige a
POST /api/auth/login - Worker redirige a Google OAuth consent screen
- Google redirige a
GET /api/auth/callbackcon code - Worker intercambia code por tokens, verifica email
- Crea JWT (HS256) y lo guarda en cookie
session(HttpOnly, Secure, SameSite=Lax) - Redirige a
/
Restriccion
Solo se permite el email ivankorzy@gmail.com. Cualquier otro email es rechazado.
Verificacion
Todos los endpoints (excepto auth) verifican el JWT de la cookie antes de procesar. Si no hay JWT o es invalido, retorna 401 Unauthorized.
Secrets (wrangler)
CF_API_KEY- API key de CloudflareGOOGLE_CLIENT_ID- OAuth client IDGOOGLE_CLIENT_SECRET- OAuth client secretJWT_SECRET- Clave para firmar JWTs
Ultima actualizacion: 13 de marzo 2026
API Endpoints
Worker: panel-api (panel-api.ivankorzy.workers.dev)
Autenticacion
| Metodo | Endpoint | Auth | Descripcion |
|---|---|---|---|
| POST | /api/auth/login | No | Inicia OAuth Google |
| GET | /api/auth/callback | No | Callback OAuth |
| GET | /api/auth/me | No | Info usuario actual |
| POST | /api/auth/logout | No | Cerrar sesion |
Analytics
| Metodo | Endpoint | Params | Descripcion |
|---|---|---|---|
| GET | /api/analytics/traffic | ?period=24h|7d|30d | Requests, visitors, bandwidth, threats, timeseries |
| GET | /api/analytics/countries | - | Trafico por pais |
| GET | /api/analytics/pages | - | Top paginas |
| GET | /api/analytics/status-codes | - | Distribucion HTTP status |
DNS
| Metodo | Endpoint | Descripcion |
|---|---|---|
| GET | /api/dns/records | Listar todos los registros |
| PUT | /api/dns/records/:id | Editar registro |
| DEL | /api/dns/records/:id | Eliminar registro |
Workers & Pages
| Metodo | Endpoint | Descripcion |
|---|---|---|
| GET | /api/workers/list | Listar Workers |
| GET | /api/pages/list | Listar Pages |
Cache
| Metodo | Endpoint | Body | Descripcion |
|---|---|---|---|
| POST | /api/cache/purge-all | - | Purgar todo |
| POST | /api/cache/purge-urls | {urls: [...]} | Purgar URLs (max 30) |
AWS
| Metodo | Endpoint | Descripcion |
|---|---|---|
| GET | /api/aws/health | Health check EC2 (proxied via aws.generadores.ar) |
Ultima actualizacion: 13 de marzo 2026