跳到正文
GitHub·· 7 天前AI 评分22

sanidhyy/meet-ai:基于 Next.js 的 AI 会议应用开源项目

sanidhyy/meet-ai

AI 导读

GitHub 项目 sanidhyy/meet-ai 是一个基于 Next.js 构建的 AI 会议应用,集成 GetStream 提供视频与聊天、Neon 提供 PostgreSQL 数据库、Polar 处理支付计费、UploadThing 负责文件上传,并支持 GitHub 与 Google OAuth 登录。

正文

AI-Powered Intelligent Chat Assistant and Meeting Summarizer using Next.js 15 and Stream Video

Ask Me Anything! GitHub license Maintenance GitHub branches Github commits GitHub issues GitHub pull requests Vercel status

📔 Table of Contents

‼️ Folder Structure

Here is the folder structure of this app.

meet-ai/
  |- migrations/
  |- public/
  |- src/
    |-- app/
      |--- (auth)/
      |--- (dashboard)/
      |--- api/
      |--- call/
      |--- portal/
      |--- apple-icon.png
      |--- favicon.ico
      |--- globals.css
      |--- icon0.svg
      |--- icon1.png
      |--- layout.tsx
      |--- manifest.json
      |--- not-found.tsx
    |-- components/
      |--- providers/
      |--- ui/
      |--- command-select.tsx
      |--- data-pagination.tsx
      |--- data-table-features.ts
      |--- data-table.tsx
      |--- empty-state.tsx
      |--- error-state.tsx
      |--- generated-avatar.tsx
      |--- loading-state.tsx
      |--- responsive-dialog.tsx
    |-- config/
      |--- http-status-codes.ts
      |--- index.ts
    |-- db/
      |--- index.ts
      |--- schema.ts
    |-- env/
      |--- client.ts
      |--- server.ts
    |-- hooks/
      |--- use-confirm.tsx
      |--- use-mobile.ts
    |-- inngest/
      |--- client.ts
      |--- functions.ts
    |-- lib/
      |--- auth-client.ts
      |--- auth.ts
      |--- avatar.tsx
      |--- encryption.ts
      |--- polar.ts
      |--- stream-chat.ts
      |--- stream-video.ts
      |--- utils.ts
    |-- modules/
      |--- agents/
      |--- auth/
      |--- call/
      |--- dashboard/
      |--- meetings/
      |--- premium/
      |--- settings/
    |-- trpc/
      |--- routers/
      |--- client.tsx
      |--- init.ts
      |--- query-client.ts
      |--- server.ts
    |-- types/
      |--- index.ts
  |- .env.example
  |- .env/.env.local
  |- .gitignore
  |- .prettierignore
  |- .prettierrc.mjs
  |- components.json
  |- drizzle.config.ts
  |- environment.d.ts
  |- eslint.config.mjs
  |- next.config.ts
  |- package.json
  |- pnpm-lock.yaml
  |- pnpm-workspace.yaml
  |- postcss.config.mjs
  |- tsconfig.json
  |- vercel.ts

🧰 Getting Started

  1. Make sure Git and NodeJS is installed.
  2. Clone this repository to your local computer.
  3. Create .env.local file in root directory.
  4. Contents of .env.local:
# disable telemetry
DO_NOT_TRACK=1
BETTER_AUTH_TELEMETRY=0
NEXT_TELEMETRY_DISABLED=1

# app base url
NEXT_PUBLIC_APP_BASE_URL="http://localhost:3000"

# neon db uri
DATABASE_URL="postgresql://<username>:<password>@<hostname>/MeetAI?sslmode=require"

# better auth secret (generated by `openssl rand -hex 32`)
BETTER_AUTH_SECRET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

# github oauth client id and secret
GITHUB_CLIENT_ID="XXXXXXXXXXXXXXXXXXXXX"
GITHUB_CLIENT_SECRET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

# google oauth client id and secret
NEXT_PUBLIC_GOOGLE_CLIENT_ID="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"
GOOGLE_CLIENT_SECRET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

# stream video api key and secret
NEXT_PUBLIC_STREAM_VIDEO_API_KEY="xxxxxxxxxxxx"
STREAM_VIDEO_API_SECRET="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# stream chat api key and secret
NEXT_PUBLIC_STREAM_CHAT_API_KEY="xxxxxxxxxxxx"
STREAM_CHAT_API_SECRET="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# polar access token
POLAR_ACCESS_TOKEN="polar_oat_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

# uploadthing token
UPLOADTHING_TOKEN="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

# verification and cron secret (generated by `openssl rand -hex 32`)
VERIFICATION_SECRET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
CRON_SECRET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

5. Disable Telemetry (Optional)

DO_NOT_TRACK=1
BETTER_AUTH_TELEMETRY=0
NEXT_TELEMETRY_DISABLED=1
  • These disable analytics/telemetry from Better Auth and Next.js. Keep them as provided.

6. App Base URL

NEXT_PUBLIC_APP_BASE_URL="http://localhost:3000"
  • Keep as http://localhost:3000 during development.
  • Change to your deployed URL (e.g., https://app-meetai.vercel.app) in production.

7. Neon (PostgreSQL Database)

  • Sign up at Neon.
  • Create a new PostgreSQL project.
  • Go to Connection Details and copy the Connection String.
  • Replace <username>, <password>, and <hostname> with your Neon credentials.
  • Append ?sslmode=require at the end (needed for secure connections).

8. GetStream (Video & Chat)

  • Create an Account & App

  • Get Your API Keys

    • From your app’s dashboard > Chat Messaging and Video & Audio, locate:
      • API Key → used in the frontend (NEXT_PUBLIC_STREAM_VIDEO_API_KEY and NEXT_PUBLIC_STREAM_CHAT_API_KEY)
      • API Secret → used in backend or server code only (STREAM_VIDEO_API_SECRET and STREAM_CHAT_API_SECRET) (Copy both API Key and API Secret and paste in .env.local)
  • Create Webhook

    • In the GetStream Dashboard, go to:
      • Chat Messaging > Settings > Webhooks
      • Video & Audio > Settings > Webhooks
    • Create a new webhook with this URL: http://localhost:3000/api/webhook/stream.
    • Select all available events/endpoints for both Chat Messaging and Video & Audio.
    • Click on Create Webhook.
    • This ensures your backend receives real-time notifications for messages, participants, and call updates.

NOTE: Replace http://localhost:3000 with your app's base URL.


9. Polar (Payments / Billing)

  • Create an Account

  • Generate Access Token

    • Navigate to Settings > Developers (or Organization > Developers).
    • Create a new Organization Access Token (OAT).
    • Copy the token and set (POLAR_ACCESS_TOKEN) in .env.local.

10. UploadThing (File Uploads)

  • Sign up at UploadThing.
  • Create a new app.
  • Copy the API Token → UPLOADTHING_TOKEN

11. GitHub OAuth Client ID and Secret

To obtain GitHub OAuth credentials:

  • Go to GitHub Developer Settings.
  • Create a new OAuth app:
    • Homepage URL: Your app's base URL (e.g., http://localhost:3000).
    • Authorization callback URL: http://localhost:3000/api/auth/callback/github.
  • After creation, you'll get Client ID and Client Secret.

NOTE: Replace http://localhost:3000 with your app's base URL.


12. Google OAuth Client ID and Secret

To obtain Google OAuth credentials:

  • Visit the Google Cloud Console.
  • Create a new project and configure OAuth consent screen with default settings.
  • Create OAuth 2.0 credentials:
    • Authorised JavaScript origins: http://localhost and http://localhost:3000 for one-tap sign in.
    • Authorized redirect URIs: http://localhost:3000/api/auth/callback/google.
  • After creation, you'll receive a Client ID and Client Secret.

NOTE: Replace http://localhost:3000 with your app's base URL.


13. Generate Secrets

  • Generate better auth secret, verification secret and cron secret (for cryptographic signing):

    openssl rand -hex 32

    Copy the output → BETTER_AUTH_SECRET, VERIFICATION_SECRET and CRON_SECRET separately


14. Ngrok

ngrok config add-authtoken YOUR_AUTH_TOKEN

  1. Install Project Dependencies using npm install --legacy-peer-deps or yarn install --legacy-peer-deps or pnpm install --legacy-peer-deps.

  2. Now app is fully configured 👍 and you can start using this app using either one of npm run dev or yarn dev or pnpm dev.

NOTE: Please make sure to keep your API keys and configuration values secure and do not expose them publicly.

🙋 Need Help?

If you run into issues during installation or setup:

📷 Screenshots

Modern UI/UX

Subscriptions powered by Polar

Audio and Camera Preview

Live Meeting with GetStream

⚙️ Tech Stack

React JS Next JS Typescript PostgreSQL Tailwind CSS Vercel

🔧 Stats

Stats for MeetAI

🙌 Contribute

You might encounter some bugs while using this app. You are more than welcome to contribute. Just submit changes via pull request and I will review them before merging. Make sure you follow community guidelines.

💎 Acknowledgements

Useful resources and dependencies that are used in MeetAI.

☕ Buy Me a Coffee

🚀 Follow Me

Follow Me Tweet about this project

📚 Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

📃 Deploy on Vercel

The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.

Check out Next.js deployment documentation for more details.

⭐ Give A Star

You can also give this repository a star to show more people and they can use this repository.

🌟 Star History

(back to top)

来源:GitHub · github.com