Complete-Clone-Meet-Ai-Platform
Complete-Clone-Meet-Ai-Platform copied to clipboard
End-to-end AI-powered video call application where you implement real-time calls with customized AI agents, generate automatic summaries and transcriptions through background processes, and create a p...
Meet AI Platform 🚀
Next-generation video conferencing powered by AI: smarter, more productive, and effortlessly organized.
🌟 Features
| Core Functionality | AI Capabilities |
|---|---|
| AI-Powered Video Calls | Custom Real-time Agents |
| Smart Meeting Summaries | AI Q&A |
| Meeting Recordings | OpenAI Integration |
| Transcript Search | Smart Transcripts |
🛠 Technical Stack
| Layer | Technology |
|---|---|
| Frontend | Next.js 16, React 19, Tailwind CSS v4 |
| UI Components | shadcn/ui |
| Auth | Better Auth |
| Real-time | Stream Video SDK, Stream Chat SDK |
| Background | Inngest (background jobs) |
| Payments | Polar subscriptions |
| DB/ORM | Drizzle ORM |
| Package Mgmt | Bun, npm, or yarn |
| Deploy | Railway (via Docker image from GitHub Packages) |
📐 Architecture Overview
flowchart TD
User[User] -->|Sign In/Up| NextJS[Next.js App]
NextJS -->|API Call| AuthAPI[Better Auth API]
NextJS -->|Video| StreamSDK[Stream Video/Chat SDK]
NextJS -->|AI| OpenAI[OpenAI API]
NextJS -->|Payments| Polar[Polar API]
NextJS -->|Background| Inngest[Inngest Jobs]
NextJS -->|DB| Drizzle[Drizzle ORM]
🔐 Authentication Flow
sequenceDiagram
participant U as User
participant FE as Next.js Frontend
participant BA as Better Auth API
participant DB as Database
U->>FE: Submit credentials (Sign In/Up)
FE->>BA: POST /api/auth
BA->>DB: Validate or create user
DB-->>BA: User data / Auth token
BA-->>FE: Auth token (JWT/session)
FE-->>U: Set session, redirect to dashboard
📦 Endpoints principales (API)
| Endpoint | Método | Descripción |
|---|---|---|
/api/auth/sign-in |
POST | Login de usuario |
/api/auth/sign-up |
POST | Registro de usuario |
/api/meetings |
GET | Listar reuniones |
/api/meetings |
POST | Crear nueva reunión |
/api/meetings/:id |
GET | Obtener detalles de reunión |
/api/meetings/:id/summary |
GET | Obtener resumen AI de la reunión |
/api/meetings/:id/recording |
GET | Descargar grabación |
/api/payments/subscribe |
POST | Suscribirse vía Polar |
⚙️ Variables de entorno
Configura tus variables en .env.local (para desarrollo local) y en Railway (para despliegue):
| Variable | Descripción |
|---|---|
STREAM_API_KEY |
Credencial de Stream Video/Chat |
STREAM_API_SECRET |
Secreto de Stream Video/Chat |
OPENAI_API_KEY |
Clave de OpenAI |
BETTER_AUTH_SECRET |
Secreto para Better Auth |
POLAR_API |
Clave para pagos con Polar |
| ... | Ver .env.example para más detalles |
🚀 Getting Started
Prerequisitos
- Node.js 18+
- Bun (opcional, recomendado)
- npm o yarn
- Credenciales de Stream
- API Key de OpenAI
Instalación
# Clona el repositorio
git clone https://github.com/LostoVayne/meet-ai-platform.git
cd meet-ai-platform
# Instala dependencias (elige uno)
bun install
# o
npm install
# o
yarn
# Configura variables de entorno
cp .env.example .env.local
# Inicia el servidor de desarrollo
bun dev
# o
npm run dev
# o
yarn dev
🚀 Deployment en Railway
Este proyecto se despliega en Railway utilizando una imagen Docker que se construye y se sube automáticamente a GitHub Packages mediante GitHub Actions.
Flujo de Despliegue
- Push a la rama
master: Al hacergit pusha la ramamaster, se activa un workflow de GitHub Actions (.github/workflows/deploy.yml). - Construcción y Push de la Imagen Docker: El workflow construye la imagen Docker utilizando
dockerfile.prody la sube a GitHub Packages (ghcr.io). - Despliegue en Railway: Railway detecta la nueva imagen en GitHub Packages y automáticamente despliega la nueva versión de la aplicación.
Configuración en Railway
- Conecta tu repositorio: En Railway, crea un nuevo proyecto y conecta tu repositorio de GitHub.
- Configura el servicio:
- Selecciona la opción para desplegar desde una imagen Docker.
- Especifica la URL de la imagen de GitHub Packages. Por ejemplo:
ghcr.io/LostoVayne/meet-ai-platform:latest(asegúrate de reemplazarLostoVaynecon tu nombre de usuario de GitHub ymeet-ai-platformcon el nombre de tu repositorio). - Asegúrate de que Railway tenga los permisos necesarios para acceder a tus GitHub Packages.
- Variables de Entorno: Configura todas las variables de entorno necesarias (las mismas que en
.env.local) directamente en la configuración de tu servicio en Railway.
🧩 Uso de shadcn/ui
- Componentes reutilizables en
src/components/ui/. - Ejemplo:
import { Button } from "@/components/ui/button";
<Button variant="primary">Iniciar reunión</Button>;
🔑 Better Auth
- Autenticación segura y moderna.
- Flujos en
src/app/(auth)/sign-inysign-up. - Vistas personalizadas en
src/modules/auth/ui/views/.
💳 Polar (Pagos y Suscripciones)
- Integración con Polar para suscripciones y pagos.
- Configura tu clave en las variables de entorno.
- El flujo de pago se maneja desde el dashboard.
📚 Reglas y buenas prácticas
- Usa Bun para desarrollo rápido y eficiente.
- Sigue la convención de carpetas de Next.js (app router).
- Componentes UI en
src/components/ui/. - Hooks personalizados en
src/hooks/. - Mantén dependencias actualizadas.
- Usa ESLint y Prettier para mantener el código limpio.
- No subas claves ni secretos al repositorio.
🧪 Testing
- Próximamente: integración con Jest y pruebas E2E.
🤝 Contribuir
- Haz un fork del repositorio.
- Crea una rama para tu feature/fix.
- Haz un PR describiendo tus cambios.
📞 Soporte
¿Dudas o sugerencias? Abre un issue o contacta a Lostovayne.
📝 Licencia
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.