Transform your meetings into collaborative experiences with AI agents that don't just attendβthey participate, understand, and help you achieve more. MeetAI is a cutting-edge platform that seamlessly blends real-time video conferencing with advanced AI capabilities.
- Smart AI Agents: Create custom AI assistants with tailored instructions and personalities
- Real-time Participation: AI agents join your calls, respond to voice, and contribute meaningfully
- Adaptive Learning: Agents remember context and maintain conversation continuity
- Multi-Agent Ecosystem: Deploy different agents for different meeting types and purposes
- Crystal Clear Calls: Powered by Stream Video for professional-quality conferences
- Live Transcription: Automatic, real-time transcription with speaker identification
- Smart Recordings: Auto-generated recordings with searchable content
- Mobile-First Design: Seamless experience across all devices
- AI-Powered Summaries: Comprehensive meeting summaries with key insights
- Interactive Chat: Continue conversations with your AI agent after meetings
- Searchable Transcripts: Find any moment in your meeting history instantly
- Type-Safe APIs: Built with tRPC for end-to-end type safety
- Real-time Everything: WebSocket-powered live updates and notifications
- Scalable Infrastructure: Built to handle enterprise-scale meeting loads
- Modern Stack: Next.js 15, TypeScript, and cutting-edge tools
graph TB
Client[Next.js Client] --> tRPC[tRPC API Layer]
tRPC --> Auth[Better Auth]
tRPC --> DB[(PostgreSQL + Drizzle)]
tRPC --> Stream[Stream Video/Chat]
tRPC --> AI[OpenAI + DeepSeek]
Webhooks[Stream Webhooks] --> Processing[Inngest Jobs]
Processing --> AI
Processing --> DB
Auth --> Polar[Polar Billing]
Stream --> Recording[Auto Recording]
AI --> Transcription[Live Transcription]
Framework: Next.js 15 with App Router
Language: TypeScript (100% type-safe)
Styling: Tailwind CSS + Custom Design System
Components: Radix UI + Custom Component Library
State: TanStack Query
Forms: React Hook Form + Zod ValidationAPI Layer: tRPC (Type-safe APIs)
Database: PostgreSQL + Drizzle ORM
Authentication: Better Auth (Multi-provider)
Background Jobs: Inngest (Event-driven)
File Storage: Stream CDNVideo Platform: Stream Video SDK
Chat System: Stream Chat SDK
AI Models: OpenAI GPT-4 + DeepSeek
Voice Processing: OpenAI Realtime API
Transcription: Stream Transcription
Summaries: Custom AI AgentsHosting: Vercel (Zero-config deployment)
Database: Neon PostgreSQL (Serverless)
Billing: Polar (Subscription management)- Node.js 18+ (LTS recommended)
- PostgreSQL database (or Neon account)
- OpenAI API key (paid tier for voice features)
- Stream account (Video & Chat)
- Git for version control
# Clone the repository
git clone https://github.com/yourusername/meetai.git
cd meetai
# Install dependencies (we recommend pnpm)
pnpm install
# or npm installCreate .env.local with your API keys:
# Database Configuration
DB_URL="postgresql://user:pass@localhost:5432/meetai"
# Authentication
BETTER_AUTH_SECRET="your-super-secret-auth-key-here"
BETTER_AUTH_URL="http://localhost:3000"
# AI Services
OPENAI_API_SECRET_KEY="sk-your-openai-api-key"
DEEPSEEK_API_KEY="your-deepseek-api-key"
# Stream Video & Chat
NEXT_PUBLIC_STREAM_VIDEO_API_KEY="your-stream-video-key"
STREAM_VIDEO_SECRET_KEY="your-stream-video-secret"
NEXT_PUBLIC_STREAM_CHAT_API_KEY="your-stream-chat-key"
STREAM_CHAT_SECRET_KEY="your-stream-chat-secret"
# Background Processing
INNGEST_EVENT_KEY="evt_your-inngest-event-key"
INNGEST_SIGNING_KEY="signkey_your-inngest-signing-key"
# Social Authentication (Optional)
GOOGLE_CLIENT_ID="your-google-oauth-client-id"
GOOGLE_CLIENT_SECRET="your-google-oauth-secret"
GITHUB_CLIENT_ID="your-github-oauth-client-id"
GITHUB_CLIENT_SECRET="your-github-oauth-secret"# Initialize database schema
pnpm db:push
# Optional: Seed with sample data
pnpm db:seedpnpm devVisit http://localhost:3000 and create your first AI agent! π
Our codebase follows a feature-driven modular architecture:
src/
βββ app/ # Next.js App Router
β βββ (auth)/ # Authentication flows
β β βββ sign-in/ # Login page
β β βββ sign-up/ # Registration page
β βββ (dashboard)/ # Protected dashboard area
β β βββ agents/ # AI agent management
β β βββ meetings/ # Meeting dashboard
β β βββ upgrade/ # Billing & subscription
β βββ api/ # API routes & webhooks
β β βββ webhook/ # Stream webhook handlers
β β βββ trpc/ # tRPC endpoint
β βββ call/ # Video call interface
β βββ inngest/ # Background job functions
βββ components/ # Reusable UI components
β βββ ui/ # Base UI primitives
β βββ data-table.tsx # Advanced data tables
β βββ generate-avatar.tsx # Dynamic avatar generation
β βββ responsive-dialog.tsx # Mobile-first dialogs
βββ db/ # Database layer
β βββ schema.ts # Drizzle schema definitions
β βββ index.ts # Database connection
βββ hooks/ # Custom React hooks
β βββ use-debounce.ts # Performance optimization
β βββ use-mobile.ts # Responsive design
β βββ use-confirm.tsx # User confirmations
βββ lib/ # Core utilities
β βββ auth.ts # Authentication config
β βββ stream-video.ts # Video SDK setup
β βββ stream-chat.ts # Chat SDK setup
β βββ utils.ts # Helper functions
βββ module/ # Feature modules
β βββ agents/ # π€ AI Agent Management
β β βββ components/ # Agent UI components
β β βββ procedures.ts # Agent API endpoints
β β βββ schemas.ts # Validation schemas
β β βββ views/ # Agent page views
β βββ meetings/ # π₯ Meeting Management
β β βββ components/ # Meeting UI components
β β βββ procedures.ts # Meeting API endpoints
β β βββ views/ # Meeting page views
β βββ auth/ # π Authentication
β βββ call/ # π Video Calling
β βββ dashboard/ # π Dashboard
β βββ premium/ # π Subscription Management
βββ trpc/ # API layer
βββ init.ts # tRPC initialization
βββ client.ts # Client-side setup
βββ server.ts # Server-side setup
Create sophisticated AI assistants that understand context and maintain personality:
// Example: Creating a Project Manager Agent
const projectManagerAgent = {
name: "Project Manager Pro",
instructions: `
You are an experienced project manager who:
- Tracks action items and deadlines
- Asks clarifying questions about requirements
- Suggests best practices for team collaboration
- Maintains a professional but friendly tone
`,
};Agent Capabilities:
- π― Custom Instructions: Define personality, expertise, and behavior
- π§ Memory: Remembers conversation context across sessions
- π€ Voice Interaction: Responds to voice input in real-time
- π Meeting Analytics: Tracks participation and engagement
- π Multi-Meeting: Same agent can join different meetings
Enterprise-grade video conferencing with AI integration:
- HD Video/Audio: Crystal clear quality up to 4K
- Screen Sharing: Share presentations, documents, and applications
- Recording: Automatic recording with post-processing
- Mobile Support: Native mobile experience
- Low Latency: Global edge network for optimal performance
Transform raw meetings into actionable insights:
// Auto-generated meeting summary example
{
overview: "Product roadmap planning session focusing on Q2 features...",
keyPoints: [
"Agreed on user authentication as top priority",
"Timeline set for beta release in March",
"Budget approved for additional developer resources"
],
actionItems: [
{ assignee: "john@company.com", task: "Draft technical specs", due: "2024-01-15" }
],
nextSteps: "Follow-up meeting scheduled for January 20th"
}Continue conversations with context-aware AI:
- Meeting Memory: AI remembers everything discussed
- Document Search: Find specific moments from transcripts
- Follow-up Questions: Ask for clarifications or expansions
- Action Tracking: Monitor progress on agreed items
MeetAI supports multiple AI providers for different use cases:
// config/ai-models.ts
export const AI_MODELS = {
conversation: "gpt-4-turbo", // For real-time chat
summarization: "deepseek-chat", // For meeting summaries
chat: "deepseek-chat", // For post-meeting interactions
};Set up Stream webhooks for real-time events:
# Your webhook endpoint
https://yourdomain.com/api/webhook
# Required events:
- call.session_started
- call.session_ended
- call.transcription_ready
- call.recording_ready
- message.newUsing Drizzle for type-safe database operations:
# Generate migration
pnpm db:generate
# Apply migrations
pnpm db:migrate
# Studio for database exploration
pnpm db:studio-
Connect Repository
- Link your GitHub repository to Vercel
- Configure environment variables in dashboard
- Enable automatic deployments
-
Environment Variables
# Copy all variables from .env.local to Vercel dashboard # Ensure BETTER_AUTH_URL points to your production domain
-
Database Setup
# Use Neon for serverless PostgreSQL # Update DB_URL with production connection string
# Feature development
git checkout -b feature/amazing-feature
git commit -m "feat: add amazing feature"
git push origin feature/amazing-feature
# Create PR for review# Development
pnpm dev # Local development server
pnpm dev:ngrok # Expose local server via ngrok
pnpm dlx inngest@latest dev # Start Inngest local dev server
# Production build
pnpm build # Build for production
pnpm start # Start production server
# Database operations
pnpm db:studio # Visual database editor
pnpm db:reset # Reset database (dev only)We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
- π Code Style: Follow existing patterns and ESLint rules
- β Testing: Add tests for new features
- π Documentation: Update docs for user-facing changes
- π Type Safety: Maintain 100% TypeScript coverage
- π― Performance: Consider performance impact of changes
- π Bug Reports: Use the bug report template
- π‘ Feature Requests: Describe use case and expected behavior
- π Documentation: Help improve our guides and examples