跳到正文
GitHub·· 9 天前AI 评分15

sanidhyy/genius-ai:基于 Next.js 的 AI SaaS 应用开源项目

sanidhyy/genius-ai

AI 导读

开发者 sanidhyy 在 GitHub 开源了 genius-ai,一个基于 Next.js 的 AI SaaS 应用模板,集成 Clerk 认证、Aiven MySQL 数据库、Stripe 支付与 Crisp 客服。

正文

Genius - A Modern Next.js 16 SaaS AI Platform.

Ask Me Anything! GitHub license Maintenance GitHub branches Github commits GitHub issues GitHub pull requests Netlify Status

📔 Table of Contents

‼️ Folder Structure

Here is the folder structure of this app.

genius-ai/
  |- app/
    |-- (auth)/
    |-- (dashboard)/
    |-- (landing)/
    |-- api/
    |-- apple-icon.png
    |-- favicon.ico
    |-- globals.css
    |-- icon1.png
    |-- icon2.png
    |-- layout.tsx
  |- components/
    |-- ui/
    |-- api-keys-form.tsx
    |-- bot-avatar.tsx
    |-- crisp-chat.tsx
    |-- empty.tsx
    |-- free-counter.tsx
    |-- heading.tsx
    |-- icons.tsx
    |-- landing-content.tsx
    |-- landing-footer.tsx
    |-- landing-hero.tsx
    |-- landing-navbar.tsx
    |-- loader.tsx
    |-- mobile-sidebar.tsx
    |-- navbar.tsx
    |-- pro-modal.tsx
    |-- sidebar.tsx
    |-- subscription-button.tsx
    |-- user-avatar.tsx
  |- config/
    |-- index.ts
  |- constants/
    |-- index.ts
  |- hooks/
    |-- use-api-keys.ts
    |-- use-hydrated.ts
    |-- use-pro-modal.tsx
  |- lib/
    |-- ai-errors.ts
    |-- api-limit.ts
    |-- db.ts
    |-- encryption.ts
    |-- provider-keys.ts
    |-- stripe.ts
    |-- subscription.ts
    |-- user-api-keys.ts
    |-- utils.ts
  |- prisma/
    |-- schema.prisma
  |- providers/
    |-- crisp-provider.tsx
    |-- modal-provider.tsx
    |-- toaster-provider.tsx
  |- public/
  |- schemas/
    |-- index.ts
  |- .env.example
  |- .env/.env.local
  |- .gitignore
  |- components.json
  |- environment.d.ts
  |- eslint.config.mjs
  |- netlify.toml
  |- next.config.ts
  |- package.json
  |- pnpm-lock.yaml
  |- pnpm-workspace.yaml
  |- postcss.config.js
  |- prisma.config.ts
  |- proxy.ts
  |- tsconfig.json

🧰 Getting Started

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

# disable next.js telemetry
NEXT_TELEMETRY_DISABLED=1

# clerk auth keys
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
CLERK_SECRET_KEY=sk_test_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

# clerk redirect uri
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/dashboard
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/dashboard

# aiven database url
DATABASE_URL="mysql://<username>:<password>@<host>:<port>/genius-ai?ssl-mode=REQUIRED"

# stripe api/webhook secret key
STRIPE_API_SECRET_KEY=sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
STRIPE_WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# app base url
NEXT_PUBLIC_APP_URL=http://localhost:3000

# ai settings cookie name and verification secret (generated by `openssl rand -hex 32`)
AI_SETTINGS_COOKIE_NAME=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
VERIFICATION_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# crisp website id
NEXT_PUBLIC_CRISP_WEBSITE_ID=xxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx

5. Clerk Authentication Keys

  • Visit the Clerk dashboard: https://clerk.dev
  • Log in to your Clerk account or sign up if you don't have one.
  • Go to the "Projects" section and select your project.
  • Navigate to the "API Keys" tab.
  • Copy the "Publishable Key" and replace NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY in the .env.local file with the copied key.
  • Copy the "Secret Key" and replace CLERK_SECRET_KEY in the .env.local file with the copied key.

6. Aiven Database URL

If you don't have an Aiven account, sign up here. After creating an account, set up a MySQL database. In the Aiven dashboard, find your database connection details and construct the DATABASE_URL in the following format:

DATABASE_URL="mysql://<username>:<password>@<host>:<port>/genius-ai?ssl-mode=REQUIRED"

7. Stripe API and Webhook Keys

For Stripe, sign up or log in to your Stripe Dashboard. Once logged in, go to Developers > API keys to find your API secret key and webhook secret. Set them as STRIPE_API_SECRET_KEY and STRIPE_WEBHOOK_SECRET in your project's environment.

STRIPE_API_SECRET_KEY=sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
STRIPE_WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

8. App Base URL

Set the base URL of your application as NEXT_PUBLIC_APP_URL in your project's environment.

NEXT_PUBLIC_APP_URL=http://localhost:3000

9. Crisp Website ID

Sign up on Crisp and create a website. Once created, find your website ID in the Crisp dashboard and set it as NEXT_PUBLIC_CRISP_WEBSITE_ID in your project's environment.

NEXT_PUBLIC_CRISP_WEBSITE_ID=xxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx

10. AI Settings Cookie Secrets

Generate two separate secrets with openssl rand -hex 32 and set them as AI_SETTINGS_COOKIE_NAME and VERIFICATION_SECRET. These encrypt and name the httpOnly cookie that stores each user's OpenAI and Replicate credentials from Settings.

openssl rand -hex 32
AI_SETTINGS_COOKIE_NAME=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
VERIFICATION_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  1. Open terminal in root directory. Run npm 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 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

Conversation Page

Image Generation

Code Generation

⚙️ Tech Stack

React JS Next JS Typescript Tailwind CSS Netlify Prisma MySQL

🔧 Stats

Stats for Genius

🙌 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 Genius.

☕ 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