The Problem
Enterprises that want to embed AI assistants into meetings must stitch together authentication, database, video/chat streams, and OpenAI calls. Building this stack from scratch incurs high engineering cost and security risk.
What This Does
meetai delivers a ready‑to‑run full‑stack platform for AI‑driven meetings. The Next.js App Router (src/app/…) defines UI pages for auth (src/app/(auth)/sign‑in/page.tsx), the dashboard (src/app/(dashboard)/…), and live call views (src/app/call/[meetingId]/page.tsx).
Business logic lives in src/modules/…: agents (src/modules/agents/…), meetings (src/modules/meetings/…), and call UI (src/modules/call/ui/…). Each module exports a TRPC server procedure (e.g., src/modules/agents/server/procedures.ts) and a set of React components.
Data persistence uses Drizzle ORM (src/db/schema.ts, src/db/index.ts) against PostgreSQL, with migrations in drizzle/. Authentication is handled by BetterAuth (better-auth.config.ts, src/lib/auth.ts). Background jobs (email sending, webhook handling) run on Inngest (src/inngest/functions.ts). Real‑time video/chat relies on Stream.io (src/lib/stream-video.ts, src/lib/stream-chat.tsx).
The UI is built with Tailwind CSS and a custom component library under src/components/ui/. Email templates for onboarding, agent creation, etc., are in src/lib/email/templates/.
How To Use It
Clone and install
git clone https://github.com/AppajiDheeraj/meetai.git cd meetai npm install
Environment – copy template and fill values
cp .env.example .env Required keys (as described in .env.example): DATABASEURL, OPENAIAPIKEY, STREAMAPIKEY, POLARAPIKEY, BETTERAUTH_SECRET, etc.
Apply DB schema
npx drizzle-kit push
Development server
npm run dev
Build for production: npm run build (uses next.config.ts). Linting: npm run lint (ESLint config in eslint.config.mjs).
The entry point for the web server is the Next.js framework; running npm run dev starts the app on http://localhost:3000. API routes are under src/app/api/… (e.g., src/app/api/auth/[...all]/route.ts).
Real‑World Use
A SaaS product could embed Meet.AI to provide each customer a private AI assistant for their sales calls. After a user signs in (BetterAuth flows in src/app/(auth)/sign‑in/page.tsx), they create an agent (src/modules/agents/ui/components/agent-form.tsx). When a meeting is scheduled, the platform invokes src/modules/meetings/server/procedures.ts to generate a meeting record, then streams video via Stream.io. Post‑call, src/modules/meetings/ui/components/transcript.tsx displays the OpenAI‑generated summary.
// Example: fetch agents with TRPC const { data: agents } = trpc.agents.list.useQuery();
Code Health & Issues
Medium – No CI/CD – No .github/workflows or other CI config; automated testing not enforced. Medium – Missing LICENSE – Repository lacks a license file, leaving reuse rights unclear. Low – Limited test coverage – Only one test file found; many critical paths (auth, webhook handling) are untested. Low – Secrets in repo? – .env.example is present, but no accidental secret values detected; still requires careful secret management. Low – Documentation gaps – README covers start-up but does not document required env vars in detail; developers must infer from code.
Overall the code follows a clear modular pattern, TypeScript types are present (src/modules/agents/types.ts), and linting is configured. No obvious security anti‑patterns are visible in the inspected files.
The Bottom Line
meetai is a well‑structured, production‑grade starter for AI‑enabled meeting platforms, offering integrated auth, DB, TRPC, and Stream.io. It is suitable for teams that can supply the missing CI pipeline and add comprehensive tests. Organizations needing a fast, feature‑complete foundation for AI assistants will find it valuable, provided they address the licensing and automation gaps before wider adoption.