个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证🤖 SaaS de WhatsApp con IA — Agenda turnos, cobra con MercadoPago y atiende clientes 24/7. Built with React, Node.js, MongoDB & Groq AI.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Plataforma multi-tenant para automatizar la atención al cliente, gestión de turnos y pagos via WhatsApp, impulsada por LLaMA 3.3 70B (Groq).
| Capa | Tecnología |
|---|---|
| Backend | Node.js + Express |
| Base de datos | MongoDB + Mongoose |
| Autenticación | Passport.js — JWT + Google OAuth + Facebook OAuth |
| Cifrado | AES-256-GCM + PBKDF2 (crypto nativo de Node) |
| IA | Groq — LLaMA 3.3 70B |
| Baileys (WebSocket directo — sin Puppeteer) | |
| Tiempo real | Socket.io |
| Calendario | Google Calendar API |
| Pagos | MercadoPago |
| Audio STT | Whisper (via Groq) |
| Audio TTS | Rime.ai |
| Frontend | React + Vite + Tailwind CSS |
| Deploy | Render (backend) + Vercel (frontend) |
akira-cloud/
├── backend/
│ ├── config/
│ │ ├── db.js ← Conexión MongoDB
│ │ ├── env.validator.js ← Validación de .env al arrancar
│ │ ├── logger.js ← Winston logger
│ │ └── passport.js ← Estrategias OAuth
│ ├── middleware/
│ │ └── auth.js ← requireAuth, requireAdmin, generarJWT
│ ├── models/
│ │ ├── User.js ← Usuarios con OAuth, roles, planes y esTester
│ │ ├── Config.js ← API Keys cifradas + horarios + pausa + días bloqueados
│ │ ├── Log.js ← Auditoría con TTL automático (90 días)
│ │ └── Referido.js ← Relaciones de referidos y comisiones pendientes
│ ├── routes/
│ │ ├── auth.routes.js ← Login, registro, OAuth, generación de códigos referido
│ │ ├── bot.routes.js ← Control del bot (start/stop/logs/stats)
│ │ ├── config.routes.js ← API Keys, negocio, horarios, pausa, días bloqueados
│ │ ├── admin.routes.js ← Panel admin: usuarios, pánico, testers, referidos
│ │ └── subscription.routes.js ← Checkout y webhooks de suscripciones
│ ├── services/
│ │ ├── akira.bot.js ← Orquestador del bot (WhatsApp + IA + notificaciones)
│ │ ├── bot.manager.js ← Gestor multi-tenant + arquitectura híbrida cloud/edge
│ │ ├── worker.handler.js ← Comunicación con worker local via Socket.io
│ │ ├── crypto.service.js ← Cifrado/descifrado AES-256-GCM
│ │ └── bot/
│ │ ├── audio.service.js ← STT Whisper + TTS Rime
│ │ ├── calendar.service.js ← Google Calendar + horarios por día
│ │ ├── groq.service.js ← LLM + manejo de rate-limit
│ │ ├── mercadopago.service.js ← Pagos y verificación MP
│ │ └── persistence.service.js ← I/O de memoria del bot
│ ├── scripts/
│ │ ├── seedAdmin.js ← Crear admin inicial
│ │ └── limpiarSesiones.js ← Limpiar sesiones de WhatsApp
│ ├── tests/
│ │ ├── crypto.service.test.js
│ │ ├── env.validator.test.js
│ │ └── persistence.service.test.js
│ └── server.js ← Entrada principal
├── worker/
│ ├── worker.js ← Worker local — corre el bot en tu máquina
│ └── package.json
├── frontend/
│ └── src/
│ ├── pages/
│ │ ├── Landing.jsx ← Landing page
│ │ ├── Login.jsx ← Auth + OAuth
│ │ ├── Register.jsx ← Registro con código de referido
│ │ ├── Dashboard.jsx ← QR + logs en vivo + stats + toggle pausa rápido
│ │ ├── ConfigPage.jsx ← Keys + negocio + horarios + pausa + días bloqueados
│ │ ├── AgendaPage.jsx ← Vista de agenda del bot
│ │ ├── PlanesPage.jsx ← Suscripciones, checkout y referidos
│ │ └── AdminPanel.jsx ← Gestión de usuarios, testers y comisiones
│ ├── components/
│ │ ├── Layout.jsx
│ │ ├── OnboardingChecklist.jsx
│ │ └── ReferralCard.jsx ← Código referido + créditos ganados
│ ├── context/
│ │ └── AuthContext.jsx
│ ├── hooks/
│ │ └── useSocket.js
│ └── services/
│ └── api.js
└── scripts/
└── generar-vercel-json.js ← Genera vercel.json con la URL del backend
cd backend
npm install
# Configurar variables de entorno
cp .env.example .env
# Editar .env con tus valores (ver sección Variables de entorno)
# Crear carpeta de sesiones y logs
mkdir -p sessions logs
# Crear el admin inicial
npm run seed:admin
# Correr tests (opcional)
npm test
# Iniciar en desarrollo
npm run dev
cd frontend
npm install
npm run dev
El frontend corre en http://localhost:5173 y hace proxy al backend en http://localhost:5000.
El worker permite que el bot de WhatsApp corra en tu propia máquina en lugar del servidor cloud. Útil para evitar bloqueos de WA en IPs de datacenter.
cd worker
npm install
# Copiar y configurar .env
cp .env.example .env
# Completar BACKEND_URL y WORKER_SECRET
npm start
Una vez conectado, el panel mostrará "Worker local conectado" y los bots se iniciarán en tu máquina automáticamente.
Copiá backend/.env.example a backend/.env y completá los valores:
| Variable | Descripción |
|---|---|
MONGO_URI | URI de conexión a MongoDB |
JWT_SECRET | Clave secreta JWT — mínimo 32 chars aleatorios |
ENCRYPTION_KEY | Clave maestra AES-256 — mínimo 16 chars |
Para generar claves seguras:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
| Variable | Descripción |
|---|---|
BACKEND_URL | URL pública del backend — necesaria para webhooks de MercadoPago |
FRONTEND_URL | URL del frontend — necesaria para CORS y redirección OAuth |
MP_PLATFORM_ACCESS_TOKEN | Access Token de MercadoPago — para cobrar suscripciones |
NGROK_AUTH_TOKEN | Token de ngrok — para webhooks en desarrollo local |
| Variable | Descripción |
|---|---|
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET | OAuth con Google |
FACEBOOK_APP_ID / FACEBOOK_APP_SECRET | OAuth con Facebook |
MP_PLATFORM_WEBHOOK_SECRET | Verificación de firma en webhooks de MP |
NGROK_DOMAIN | Dominio fijo de ngrok (plan pago) |
WA_SESSIONS_PATH | Ruta de sesiones de WhatsApp (default: ./sessions) |
WORKER_SECRET | Token compartido entre backend y worker local |
/backendnpm installnpm start$7/mes) y configurar WA_SESSIONS_PATH=/data/sessionsvercel.json con la URL del backend:BACKEND_URL=https://tu-app.onrender.com node scripts/generar-vercel-json.js
/frontend en vercel.comVITE_API_URL=https://tu-app.onrender.com/api en Vercel (necesaria para el OAuth de Google Calendar)| Método | Ruta | Descripción |
|---|---|---|
| POST | /api/auth/register | Registro con email (acepta codigoReferidoUsado) |
| POST | /api/auth/login | Login con email |
| GET | /api/auth/me | Perfil del usuario autenticado |
| GET | /api/auth/google | Iniciar OAuth con Google |
| GET | /api/auth/facebook | Iniciar OAuth con Facebook |
| PUT | /api/auth/password | Cambiar contraseña |
| POST | /api/auth/generar-codigo | Generar código de referido para usuario existente |
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/config | Obtener configuración del usuario |
| PUT | /api/config/negocio | Guardar datos del negocio |
| PUT | /api/config/horarios | Guardar horarios de atención + celular de notificaciones |
| PUT | /api/config/pausa | Activar/desactivar modo pausa |
| PUT | /api/config/dias-bloqueados | Agregar o quitar un día bloqueado |
| PUT | /api/config/keys | Guardar API Key cifrada |
| DELETE | /api/config/keys/:campo | Eliminar una API Key |
| Método | Ruta | Descripción |
|---|---|---|
| POST | /api/bot/start | Iniciar bot |
| POST | /api/bot/stop | Detener bot |
| GET | /api/bot/status | Estado del bot |
| GET | /api/bot/logs | Logs del bot |
| GET | /api/bot/stats | Estadísticas (mensajes, reservas, cobros) |
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/subscriptions/planes | Listar planes y precios |
| POST | /api/subscriptions/checkout | Crear preferencia de pago MP |
| POST | /api/subscriptions/webhook | Webhook de notificaciones MP |
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/admin/dashboard | Stats globales |
| GET | /api/admin/users | Listar usuarios |
| POST | /api/admin/users/:id/block | Bloquear usuario + detener bot |
| POST | /api/admin/users/:id/unblock | Desbloquear usuario |
| POST | /api/admin/users/:id/tester | Activar/desactivar modo tester |
| GET | /api/admin/referidos | Listar comisiones pendientes |
| POST | /api/admin/referidos/:id/pagar | Marcar comisión como pagada |
ENCRYPTION_KEY maestra es imposible recuperarlas.MONGO_URI, JWT_SECRET, ENCRYPTION_KEY).| Plan | Mensajes/mes | Bots | Calendar | MP | Audio | Horarios config. |
|---|---|---|---|---|---|---|
| Trial | 100 | 1 | — | — | — | ✅ |
| Básico | 500 | 1 | — | — | — | ✅ |
| Pro | Ilimitado | 1 | ✅ | ✅ | ✅ | ✅ |
| Agencia | Ilimitado | 5 | ✅ | ✅ | ✅ | ✅ |
Todos los planes incluyen: modo pausa, días bloqueados y notificaciones al dueño.
# Backend
npm run dev # Desarrollo con hot-reload
npm start # Producción
npm test # Correr tests
npm run seed:admin # Crear admin inicial
npm run clean:sessions # Limpiar sesiones de WhatsApp
# Raíz del proyecto
BACKEND_URL=https://... node scripts/generar-vercel-json.js # Generar vercel.json
Akira Cloud v1.2