sanidhyy/genius-ai:基于 Next.js 的 AI SaaS 应用开源项目
sanidhyy/genius-ai
开发者 sanidhyy 在 GitHub 开源了 genius-ai,一个基于 Next.js 的 AI SaaS 应用模板,集成 Clerk 认证、Aiven MySQL 数据库、Stripe 支付与 Crisp 客服。
📔 Table of Contents
- Folder Structure
- Getting Started
- Screenshots
- Tech Stack
- Stats
- Contribute
- Acknowledgements
- Buy Me a Coffee
- Follow Me
- Learn More
- Deploy on Vercel
- Give A Star
- Star History
- Give A Star
‼️ 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
- Make sure Git and NodeJS is installed.
- Clone this repository to your local computer.
- Create
.envfile in root directory. - 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_KEYin the.env.localfile with the copied key. - Copy the "Secret Key" and replace
CLERK_SECRET_KEYin the.env.localfile 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
-
Open terminal in root directory. Run
npm install --legacy-peer-depsorpnpm install --legacy-peer-deps. -
Now app is fully configured 👍 and you can start using this app using either one of
npm run devorpnpm 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:
- GitHub Discussions — Open a Q&A discussion for setup and troubleshooting help.
- Email — sanidhyyy@gmail.com
- Discord —
@sanidhyy
📷 Screenshots:
⚙️ Tech Stack
🔧 Stats
🙌 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.
- Thanks to CodeWithAntonio: https://codewithantonio.com/
- @clerk/nextjs: ^7.9.11
- @hookform/resolvers: ^5.9.1
- @prisma/adapter-mariadb: ^7.10.0
- @prisma/client: ^7.10.0
- @radix-ui/react-avatar: ^1.2.7
- @radix-ui/react-dialog: ^1.2.0
- @radix-ui/react-label: ^2.1.8
- @radix-ui/react-progress: ^1.1.8
- @radix-ui/react-select: ^2.3.8
- @radix-ui/react-separator: ^1.1.15
- @radix-ui/react-slot: ^1.2.4
- @tailwindcss/postcss: ^4.3.3
- @types/node: ^26.6.4
- @types/react: 19.3.0
- @types/react-dom: 19.3.0
- axios: ^1.13.5
- class-variance-authority: ^0.7.1
- clsx: ^2.1.1
- crisp-sdk-web: ^1.2.1
- dotenv: ^18.0.4
- eslint: 9.39.5
- eslint-config-next: 16.3.7
- lucide-react: ^1.47.0
- next: 16.3.8
- openai: ^7.8.0
- postcss: ^8
- prisma: ^7.10.0
- react: 19.3.0
- react-dom: 19.3.0
- react-hook-form: ^7.89.0
- react-markdown: ^10.1.0
- replicate: ^1.4.0
- sonner: ^2.0.7
- stripe: ^22.6.2
- tailwind-merge: ^3.7.0
- tailwindcss: ^4.3.3
- typescript: ^6.0.3
- typewriter-effect: ^2.22.0
- zod: ^4.6.5
- zustand: ^5.0.11
☕ Buy Me a Coffee
🚀 Follow Me
📚 Learn More
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
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
来源:GitHub · github.com




