World Vibe Web
The distributed app store for vibe-coded projects. Browse, discover, and install open-source apps from across GitHub.
翻譯準備中
個人 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