Conecta profesionales que quieren ofrecer asesorías con clientes que buscan orientación especializada. 100% online por videollamada, pago seguro con Mercado Pago y una agenda flexible que cada asesor controla por completo.
Inspirado en Metis, diosa griega de la sabiduría y la prudencia.
- ¿Qué es Meti?
- ✨ Características
- 🧰 Stack tecnológico
- 🏗️ Arquitectura
- 🗺️ Flujo de reserva
- 📁 Estructura del proyecto
- 🚀 Empezar
- 🧭 Roles y rutas
- 🤝 Contribuir
- 🛣️ Roadmap
- 📄 Licencia
Meti es una plataforma que elimina las barreras de geografía y logística entre profesionales y clientes: un abogado que clarifica una duda compleja, un coach que transforma una carrera, un financiero que da seguridad en decisiones críticas — todo por videollamada, con la misma calidad que una reunión presencial.
Nuestros principios:
- 💎 Transparencia total — el asesor define cuánto gana; la plataforma añade un fee visible. El cliente ve el precio final sin sorpresas.
- ⚙️ Flexibilidad para el asesor — control total sobre servicios, horarios, precios y promociones.
- ⚡ Experiencia fluida — de buscar el asesor a pagar y asistir, en minutos.
- 🔓 Escalabilidad sin complejidad — modelo de pagos sin custodia: cada asesor usa sus propias credenciales de Mercado Pago.
| 🙋 Clientes | 🧑💼 Asesores | 🛡️ Administradores |
|---|---|---|
| 🔍 Explorar asesores por rubro con calificaciones reales | 📆 Agenda recurrente por día de semana (almuerzos, brechas entre citas) | ✅ Verificación de documentos de asesores |
| 🗓️ Agendar en slots disponibles generados automáticamente | 🛎️ Servicios múltiples con duración y precio propios | 💰 Configuración de fees y precios mínimos |
| 💳 Checkout transparente: precio + fee, pago con Mercado Pago | 🏷️ Promociones por fechas especiales (porcentaje o monto fijo) | 👥 Gestión de asesores, usuarios e facturación |
| 📹 Videollamada integrada con chat y grabación | 📊 Panel con agenda, pagos y dashboard | 🧾 Facturación mensual desglosada de fees |
| ⭐ Reseñas con rating 1–5 | 🔗 Conexión de Mercado Pago propia (sin custodia) | 📈 Métricas generales de la plataforma |
Modelo de negocio: el fee es un markup visible que se suma al precio del asesor — nunca se descuenta de su ganancia.
| Capa | Tecnología | ¿Por qué? |
|---|---|---|
| Framework | Next.js 16 (App Router) + React 19 | SSR/ISR, route handlers, file-based routing |
| Lenguaje | TypeScript | Tipado estático en todo el stack |
| Base de datos | Neon (PostgreSQL) con Prisma 7 | Branching, serverless y ORM con migraciones |
| Autenticación | better-auth + Google OAuth | Auth completa: sesiones, roles, hooks de BD |
| Pagos | Mercado Pago | Checkout PRO con credenciales por asesor (sin custodia) |
| Videollamadas | LiveKit | WebRTC escalable con chat y grabación |
| UI | Tailwind CSS 4 + shadcn/ui + Lucide | Design system energético (naranja + azul profundo) |
| Estado | Zustand + TanStack Query | Estado global + server state con cache |
| Paquete | pnpm (workspace) | Rápido, eficiente, estricto |
flowchart TB
subgraph FE["🖥️ Frontend — Next.js 16 (App Router)"]
MKT["Marketing & landing"]
BOOK["Reserva & perfiles de asesores"]
CHECK["Checkout"]
DASH["Dashboards<br/>Cliente / Asesor / Admin"]
CALL["Videollamada"]
end
subgraph BE["⚙️ Backend — Route Handlers"]
AUTH["Auth<br/>better-auth + Google OAuth"]
SLOTS["Slots & disponibilidad"]
APPT["Citas (appointments)"]
PAY["Pagos Mercado Pago"]
ADMIN["Admin, verificación<br/>& facturación"]
LIVEKIT["Tokens LiveKit"]
end
subgraph EXT["☁️ Servicios externos"]
DB[("🗄️ Neon Postgres")]
MP["Mercado Pago API"]
LK["LiveKit Cloud"]
G["Google OAuth"]
end
FE --> BE
AUTH --> G
PAY --> MP
LIVEKIT --> LK
BE --> DB
sequenceDiagram
autonumber
actor C as Cliente
participant F as Frontend
participant A as API (Next.js)
participant D as PostgreSQL (Neon)
participant MP as Mercado Pago
C->>F: Elige servicio, fecha y horario
F->>A: POST /api/advisors/:id (slots disponibles)
A->>D: Consulta agenda del asesor
D-->>A: Horarios generados
A-->>F: Slots disponibles
C->>F: Confirma la reserva
F->>A: POST /api/appointments (crea cita)
A->>D: Cita en estado pending
F->>MP: Pago en el checkout del asesor
MP-->>F: Confirmación de pago aprobado
F->>A: Actualiza estado de la cita
A->>D: Cita confirmada
F-->>C: Link de videollamada (LiveKit)
meti/
├── prisma/
│ ├── schema.prisma # Modelo de datos
│ └── migrations/ # Migraciones versionadas
├── scripts/ # Scripts de desarrollo (seed, clean)
└── src/
├── app/
│ ├── (marketing)/ # Landing, servicios, perfil de asesor
│ ├── (auth)/ # Login (Google OAuth), registro, redirect
│ ├── (platform)/ # Checkout, dashboards (cliente/asesor/admin), llamada
│ └── api/ # Route Handlers (auth, appointments, pagos...)
├── components/
│ ├── booking/ # Widget de reserva (servicio → fecha → hora → resumen)
│ ├── landing/ # Secciones del home
│ ├── ui/ # shadcn/ui + primitivas
│ └── video/ # Videollamada LiveKit
├── hooks/ # Hooks reutilizables
├── lib/ # auth, prisma, slots, utils, stores
└── proxy.ts # Middleware de rutas (Next.js 16)
- Node.js 20+ (recomendado 22+)
- pnpm 9+
- Una base de datos PostgreSQL (Neon o local)
- Proyecto OAuth de Google (credenciales de cliente)
- Cuenta de Mercado Pago (solo para pagos reales)
- Cuenta de LiveKit Cloud (solo para videollamadas)
pnpm installCopia .env.example (si existe) o crea un .env en la raíz:
| Variable | Descripción | Requerida |
|---|---|---|
DATABASE_URL |
Cadena de conexión a PostgreSQL | ✅ |
BETTER_AUTH_SECRET |
Secreto para firmar sesiones (openssl rand -base64 32) |
✅ |
BETTER_AUTH_URL |
URL base del servidor (p. ej. http://localhost:3000) |
✅ |
NEXT_PUBLIC_BETTER_AUTH_URL |
URL pública del auth (misma que la anterior) | ✅ |
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET |
Credenciales OAuth de Google | ✅ |
MERCADOPAGO_ACCESS_TOKEN |
Token de acceso de Mercado Pago | |
LIVEKIT_API_KEY / LIVEKIT_API_SECRET / LIVEKIT_URL |
Credenciales de LiveKit Cloud | |
GROQ_API_KEY |
API key de Groq (asistentes IA) |
⚠️ Nunca subas tu.env. Ya está en.gitignore.
pnpm db:migrate # Aplica las migraciones
# o si aún no hay migraciones:
pnpm db:push # Sincroniza el schema directamente
pnpm db:generate # Regenera el cliente Prismapnpm devAbre http://localhost:3000 🎉
| Comando | Descripción |
|---|---|
pnpm dev |
Servidor de desarrollo con HMR |
pnpm build |
Build de producción |
pnpm start |
Servir el build de producción |
pnpm lint |
ESLint en todo el proyecto |
pnpm db:migrate |
Aplica migraciones de Prisma |
pnpm db:push |
Sincroniza el schema a la BD |
pnpm db:clean |
Limpia datos de desarrollo |
Meti tiene tres roles de usuario, gestionados por better-auth:
| Rol | Área | Rutas principales |
|---|---|---|
CLIENT |
Agenda asesorías y paga | /services, /advisor/[id], /checkout, /dashboard |
ADVISOR |
Gestiona su negocio | /advisor (servicios, agenda, pagos, perfil) |
ADMIN |
Supervisa la plataforma | /admin (asesores, usuarios, verificación, config) |
¡Gracias por querer aportar! 🙌 Toda contribución es bienvenida: features, bugs, docs, diseño o ideas.
- Fork el repositorio y clónalo:
git clone https://github.com/edwar/meti.git cd meti - Crea tu rama de trabajo:
git checkout -b feat/mi-caracteristica # o git checkout -b fix/descripcion-del-bug - Instala dependencias y levanta el entorno (ver Empezar).
- Haz tus cambios y verifica:
pnpm lint pnpm build
- ✍️ Describe qué cambias y por qué (incluye capturas si cambia UI).
- 🔖 Usa commits descriptivos (p. ej.
feat: agregar promociones por fecha,fix: validar horario en checkout). - 🧪 Si tocas lógica de negocio, considera agregar tests o al menos documentar el caso.
- 📝 Mantén los cambios enfocados: un PR = un problema.
- 🐛 Bugs — revisa los issues abiertos o reporta uno nuevo con pasos para reproducir.
- ✨ Features — revisa el roadmap o propón una idea en un issue.
- 📖 Docs — mejorar este README, guías o comentarios.
- 🎨 UX/UI — implementar los signature interactions del design system (
DESIGN.md).
Estado actual: MVP en desarrollo.
- Autenticación con Google OAuth (better-auth)
- Perfiles de asesores, servicios y agenda recurrente
- Booking con slots automáticos y checkout
- Webhooks de Mercado Pago (confirmación de pago real)
- Panel admin (verificación, fees, usuarios)
- Notificaciones (Sileo): recordatorios y alertas de booking
- Promociones por fechas especiales
- Facturación mensual automática para asesores
- Modo oscuro
- Grabación y chat persistente en videollamadas
Distribuido bajo la Licencia MIT. © 2026 Edwar Orlando Amaya Diaz.
Meti — la sabiduría profesional, a un clic de distancia. 🧠💡