Transform your meetings with AI agents that see, hear, and understand.
Meet AI is a cutting-edge video conferencing platform that revolutionizes online meetings by integrating intelligent AI agents directly into your calls. Unlike traditional meeting tools, Meet AI provides:
- ποΈ Voice-Activated AI Agents that join as virtual participants
- π Real-Time Transcription with speaker identification
- π§ Intelligent Summaries automatically generated post-meeting
- π¬ Interactive Q&A to query meeting content using natural language
- π Smart Search across all transcripts with context highlighting
- π¨ Beautiful UI/UX built with modern design principles
Perfect for remote teams, online education, customer support, and any scenario where AI-enhanced collaboration matters.
- Real-Time HD Video Calls - Crystal clear video quality powered by Stream Video SDK
- AI Agents as Participants - Virtual AI assistants join calls with audio and video presence
- Live Chat & Threading - In-meeting messaging with threaded conversations
- Screen Sharing - Share your screen with all participants
- Call Recording - Record meetings for later review and analysis
- Voice-Enabled AI Agents - AI agents that can speak and respond in real-time during calls
- Automatic Transcription - Real-time speech-to-text with speaker identification
- AI-Generated Summaries - Intelligent meeting summaries with key points and action items
- Post-Meeting Q&A - Chat with AI about meeting content using natural language
- Smart Transcript Search - Search across all transcripts with context highlighting and relevance ranking
- Sentiment Analysis - Understand meeting tone and participant engagement
- Free Tier - Get started with 5 AI agents and 20 meetings
- Premium Plans - Unlimited agents, meetings, and advanced features
- Integrated Billing - Secure payment processing via Polar
- Self-Service Portal - Manage subscriptions, view usage, and update payment methods
- Usage Analytics - Track your consumption and optimize your plan
- Multi-Factor Authentication - Email/password with optional 2FA
- OAuth Integration - Sign in with GitHub, Google, and more
- Secure Session Management - JWT-based authentication with Better Auth
- Protected API Routes - Type-safe API endpoints with tRPC
- Role-Based Access Control - Granular permissions for teams and organizations
- Data Encryption - End-to-end encryption for sensitive meeting data
- Fully Responsive - Works seamlessly on desktop, tablet, and mobile devices
- Command Palette - Quick navigation with
Cmd+K/Ctrl+K - Real-Time Updates - Live data synchronization across all clients
- Beautiful UI - Modern design with Tailwind CSS v4 and shadcn/ui
- Dark Mode - Eye-friendly interface for any lighting condition
- Keyboard Shortcuts - Power-user features for efficient navigation
Quick preview of the platform:
1. Sign up / Sign in with GitHub or Google
2. Create your first AI agent with custom personality
3. Start a new meeting and invite the agent
4. Experience real-time AI interaction during the call
5. Review auto-generated transcripts and summaries
| Technology | Version | Purpose |
|---|---|---|
| Next.js | 16.1 | React framework with App Router for server and client components |
| React | 19 | Modern UI library with concurrent features |
| TypeScript | 5.7 | Type safety and enhanced developer experience |
| Tailwind CSS | 4.0 | Utility-first CSS framework for rapid styling |
| shadcn/ui | Latest | High-quality, accessible component library |
| tRPC | 11 | End-to-end typesafe APIs without code generation |
| Zod | 3.x | Runtime type validation and schema declaration |
| React Hook Form | 7.x | Performant form management with validation |
| TanStack Query | 5.x | Powerful data synchronization for React (via tRPC) |
| Technology | Purpose |
|---|---|
| PostgreSQL | Robust relational database (hosted on Neon) |
| Drizzle ORM | TypeScript ORM with SQL-like syntax |
| Better Auth | Modern authentication library with OAuth support |
| Inngest | Durable workflow engine for background jobs |
| OpenAI API | GPT-4o for transcription and analysis |
| Stream SDK | Real-time video, audio, and chat infrastructure |
| Tool | Purpose |
|---|---|
| Vercel | Hosting platform optimized for Next.js |
| Neon | Serverless PostgreSQL with autoscaling |
| Polar | Subscription billing and payment processing |
| ngrok | Secure tunneling for webhook development |
| ESLint | Code linting and style enforcement |
| Prettier | Code formatting automation |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Client Layer β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Next.js β β React 19 β β Tailwind β β
β β App Router β β Components β β + shadcn/ui β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β API Layer (tRPC) β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Agents β β Meetings β β Premium β β
β β Router β β Router β β Router β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Business Logic Layer β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Better Auth β β Drizzle ORM β β Inngest β β
β β (Sessions) β β (Database) β β (Workflows) β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Data & Services Layer β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β PostgreSQL β β Stream SDK β β OpenAI API β β
β β (Neon) β β (Video/Chat) β β (GPT-4o) β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Client Request β User interacts with React components
- tRPC Call β Type-safe API call to Next.js API route
- Authentication β Better Auth validates session
- Authorization β Middleware checks permissions and usage limits
- Business Logic β Procedure executes with validated input
- Database Query β Drizzle ORM fetches/updates PostgreSQL
- External APIs β Calls to Stream, OpenAI, or Polar as needed
- Response β Type-safe data returned to client
- UI Update β React re-renders with new data
- Node.js 18.17 or higher (Download)
- npm 9+ or pnpm 8+ (comes with Node.js)
- Git for version control (Download)
- Neon - Serverless PostgreSQL database (Sign up)
- Stream - Video and chat infrastructure (Sign up)
- OpenAI - GPT-4o API access (Sign up)
- Better Auth - Configure OAuth providers (GitHub, Google)
- Polar - Payment processing (Sign up)
- ngrok - Webhook tunneling with static domain (Sign up)
- Inngest - Background job processing (Sign up)
git clone https://github.com/jthapa01/meetai.git
cd meetai# Using npm (React 19 requires legacy peer deps flag)
npm install --legacy-peer-deps
# Or using pnpm
pnpm installcp .env.example .env.localSee the Environment Variables section for detailed configuration.
# Push the schema to your database
npm run db:push
# (Optional) Open Drizzle Studio to inspect your database
npm run db:studioUpdate your package.json with your ngrok static domain:
{
"scripts": {
"dev:webhook": "ngrok http --url=YOUR_STATIC_DOMAIN.ngrok-free.app 3000"
}
}-
Create a Neon Database
- Sign up at neon.tech
- Create a new project
- Copy the connection string
-
Update Environment Variables
DATABASE_URL=postgresql://user:password@host/database?sslmode=require
-
Create Stream Account
- Go to getstream.io
- Create a new app
- Get your API key and secret
-
Configure Environment
NEXT_PUBLIC_STREAM_API_KEY=your_api_key STREAM_API_SECRET=your_api_secret
-
Get API Key
- Visit platform.openai.com
- Generate an API key with GPT-4o access
-
Set Environment Variable
OPENAI_API_KEY=sk-...
-
GitHub OAuth
- Go to GitHub Settings β Developer settings β OAuth Apps
- Create new OAuth app
- Set callback URL:
http://localhost:3000/api/auth/callback/github
-
Google OAuth
- Visit Google Cloud Console
- Create OAuth 2.0 credentials
- Set authorized redirect URI
-
Configure Environment
BETTER_AUTH_SECRET=your_secret_key_min_32_chars GITHUB_CLIENT_ID=your_github_client_id GITHUB_CLIENT_SECRET=your_github_client_secret GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret
-
Create Polar Account
- Sign up at polar.sh
- Create products (subscription plans)
- Important: Mark products as "Recurring" (not one-time)
-
Configure Webhooks
- Add your ngrok URL:
https://YOUR_DOMAIN.ngrok-free.app/api/webhook/polar - Enable required events:
subscription.created,subscription.updated, etc.
- Add your ngrok URL:
-
Set Environment Variables
POLAR_ACCESS_TOKEN=polar_... POLAR_WEBHOOK_SECRET=whsec_...
You need to run three processes simultaneously for full functionality:
npm run devThis starts the Next.js app at http://localhost:3000
npm run dev:webhookThis creates a secure tunnel for webhook events from Polar and other services.
npx inngest-cli@latest devThis runs the background job processor at http://localhost:8288
- Make Code Changes - Edit files in
src/ - Hot Reload - Next.js automatically reloads
- Test Webhooks - Use ngrok URL for external services
- Check Jobs - Monitor Inngest dashboard for background tasks
- Inspect Database - Use
npm run db:studioto view data
| Command | Purpose |
|---|---|
npm run dev |
Start Next.js development server on port 3000 |
npm run dev:webhook |
Start ngrok tunnel for webhook testing |
npx inngest-cli dev |
Start Inngest dev server for background jobs |
npm run build |
Create optimized production build |
npm run start |
Start production server |
npm run lint |
Run ESLint to check for code issues |
npm run lint:fix |
Auto-fix linting issues |
npm run type-check |
Run TypeScript compiler checks |
npm run db:push |
Push schema changes to database |
npm run db:studio |
Open Drizzle Studio (database GUI) |
npm run db:generate |
Generate migration files |
npm run db:migrate |
Run pending migrations |
- Database Issues: Check your
DATABASE_URLand ensure Neon project is active - Webhook Failures: Verify ngrok is running and URL is updated in Polar dashboard
- Build Errors: Clear
.nextfolder and runnpm run buildagain - Type Errors: Run
npm run type-checkto see all TypeScript issues - API Errors: Check tRPC router logs in the terminal
| Variable | Description | Example |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | postgresql://user:pass@host/db |
BETTER_AUTH_SECRET |
Secret key for session encryption (min 32 chars) | your-secret-key-min-32-characters |
NEXT_PUBLIC_STREAM_API_KEY |
Stream API public key | abc123... |
STREAM_API_SECRET |
Stream API secret key | secret_abc123... |
OPENAI_API_KEY |
OpenAI API key for GPT-4o | sk-... |
POLAR_ACCESS_TOKEN |
Polar API access token | polar_... |
| Variable | Description |
|---|---|
GITHUB_CLIENT_ID |
GitHub OAuth app client ID |
GITHUB_CLIENT_SECRET |
GitHub OAuth app secret |
GOOGLE_CLIENT_ID |
Google OAuth client ID |
GOOGLE_CLIENT_SECRET |
Google OAuth client secret |
| Variable | Description | Example |
|---|---|---|
NEXT_PUBLIC_APP_URL |
Your application URL | http://localhost:3000 |
NODE_ENV |
Environment mode | development |
# Database
DATABASE_URL=your_neon_database_url
# Authentication
BETTER_AUTH_SECRET=your_secret_key
BETTER_AUTH_URL=http://localhost:3000
# OpenAI
OPENAI_API_KEY=your_openai_key
# Stream.io
NEXT_PUBLIC_STREAM_KEY=your_stream_key
STREAM_SECRET=your_stream_secret
# Polar
POLAR_API_KEY=your_polar_key
# Inngest
INNGEST_EVENT_KEY=your_inngest_key
INNGEST_SIGNING_KEY=your_inngest_signing_key
# OAuth (Optional)
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret- β Follow the existing code style
- β Write meaningful commit messages
- β Add comments for complex logic
- β Test your changes thoroughly
- β Update documentation as needed
- β Keep PRs focused on a single feature/fix
- Next.js - The React Framework
- Stream - Real-time video and chat
- OpenAI - GPT-4o language model
- Better Auth - Modern authentication
- Polar - Subscription billing
- shadcn/ui - Beautiful UI components
- Vercel - Hosting platform
- Neon - Serverless PostgreSQL




