一个基于 Next.js 15、Sanity CMS 和 NextAuth.js 构建的现代化内容管理系统。 支持多语言、付费内容、用户认证等完整功能的企业级CMS解决方案。
- 完整的中英文国际化
- 动态语言切换
- SEO友好的多语言路由
- 邮箱注册/登录
- OAuth登录(GitHub、Google)
- 邮箱验证和密码重置
- JWT会话管理
- Stripe支付集成
- 一次性付费模式
- 付费文章预览
- 订阅状态管理
- Sanity CMS无头内容管理
- 实时内容预览
- 富文本编辑器
- 媒体资源管理
- 响应式设计
- 暗色/亮色主题
- Shadcn/ui组件库
- 流畅的动画效果
- 用户权限管理
- 内容访问控制
- 安全的支付处理
- 数据验证和清理
| 类别 | 技术 | 版本 | 描述 |
|---|---|---|---|
| 前端框架 | Next.js | 15.x | React全栈框架 |
| 开发语言 | TypeScript | 5.x | 类型安全的JavaScript |
| UI框架 | React | 18.x | 用户界面库 |
| 样式方案 | Tailwind CSS | 3.4.x | 原子化CSS框架 |
| 组件库 | Shadcn/ui | Latest | 现代化组件库 |
| 认证系统 | NextAuth.js | 4.x | 身份验证解决方案 |
| 内容管理 | Sanity | Latest | 无头CMS |
| 支付系统 | Stripe | Latest | 在线支付处理 |
| 邮件服务 | Resend | Latest | 邮件发送服务 |
| 部署平台 | Vercel | Latest | 云部署平台 |
- Node.js 18.0 或更高版本
- npm 或 yarn 包管理器
- Git
- 克隆仓库
git clone https://github.com/ItusiAI/get-cms.git
cd get-cms- 安装依赖
npm install
# 或
yarn install- 环境配置
# 复制环境变量模板
cp .env.local.example .env.local
# 生成安全密钥
openssl rand -base64 32- 配置环境变量
💡 详细配置指南: 查看 环境变量配置文档 获取完整说明
编辑 .env.local 文件,填入以下配置:
# ===========================================
# 基础配置
# ===========================================
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-generated-secret-key
# ===========================================
# Sanity CMS 配置
# ===========================================
NEXT_PUBLIC_SANITY_PROJECT_ID=your-sanity-project-id
NEXT_PUBLIC_SANITY_DATASET=production
SANITY_API_TOKEN=your-sanity-api-token
# ===========================================
# OAuth 提供商配置
# ===========================================
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
# ===========================================
# 邮件服务配置 (Resend)
# ===========================================
RESEND_API_KEY=your-resend-api-key
FROM_EMAIL=[email protected]
FROM_NAME=Your App Name
# ===========================================
# 支付系统配置 (Stripe)
# ===========================================
STRIPE_PUBLISHABLE_KEY=your-stripe-publishable-key
STRIPE_SECRET_KEY=your-stripe-secret-key
STRIPE_WEBHOOK_SECRET=your-stripe-webhook-secret- 启动开发服务器
npm run dev
# 或
yarn dev- 访问应用
打开浏览器访问 http://localhost:3000
# 构建生产版本
npm run build
# 启动生产服务器
npm start
# 类型检查
npm run type-check
# 代码检查
npm run lint
# 代码格式化
npm run format为了帮助您快速配置和部署 Get CMS,我们提供了完整的配置文档:
- 📋 主文档 - 快速开始和概览
- 🗄️ Sanity CMS 配置 - 内容管理系统配置
- 📧 Resend 邮箱配置 - 邮件服务配置
- 🔐 OAuth 登录配置 - Google 和 GitHub 登录
- 💳 Stripe 支付配置 - 订阅支付系统
- ⚙️ 环境变量配置 - 完整环境变量说明
- 🚀 部署指南 - Vercel、Netlify 等平台部署
- 基础配置 → 环境变量配置
- 内容管理 → Sanity CMS 配置
- 用户认证 → OAuth 登录配置
- 邮件服务 → Resend 邮箱配置
- 支付功能 → Stripe 支付配置
- 上线部署 → 部署指南
-
注册 Resend 账户
- 访问 Resend 注册账户
- 验证域名或使用测试域名
-
获取 API 密钥
RESEND_API_KEY=re_xxxxxxxxxx [email protected] FROM_NAME=Your App Name
- 访问 GitHub Developer Settings
- 创建新的 OAuth App
- 配置回调URL:
- 开发环境:
http://localhost:3000/api/auth/callback/github - 生产环境:
https://your-domain.com/api/auth/callback/github
- 开发环境:
- 获取 Client ID 和 Client Secret
- 访问 Google Cloud Console
- 创建新项目或选择现有项目
- 启用 Google+ API
- 创建 OAuth 2.0 客户端ID
- 配置回调URL:
- 开发环境:
http://localhost:3000/api/auth/callback/google - 生产环境:
https://your-domain.com/api/auth/callback/google
- 开发环境:
-
创建 Sanity 项目
npm install -g @sanity/cli sanity init
-
获取项目信息
- Project ID: 在 Sanity 管理面板中找到
- Dataset: 通常为
production - API Token: 在项目设置中生成
-
配置环境变量
NEXT_PUBLIC_SANITY_PROJECT_ID=your-project-id NEXT_PUBLIC_SANITY_DATASET=production SANITY_API_TOKEN=your-api-token
-
注册 Stripe 账户
- 访问 Stripe 注册账户
-
获取 API 密钥
- 可发布密钥 (Publishable Key)
- 秘密密钥 (Secret Key)
- Webhook 密钥 (Webhook Secret)
-
配置 Webhook
- 端点URL:
https://your-domain.com/api/stripe/webhook - 监听事件:
checkout.session.completed
- 端点URL:
-
连接仓库
# 推送代码到 GitHub git add . git commit -m "Initial commit" git push origin main
-
Vercel 配置
- 访问 Vercel
- 导入 GitHub 仓库
- 配置环境变量
- 部署
-
环境变量配置 在 Vercel 项目设置中添加所有环境变量,注意:
NEXTAUTH_URL改为生产域名- 更新 OAuth 回调URL
- 使用生产环境的 API 密钥
-
部署成功 访问
https://your-domain.com查看部署结果
get-cms/
├── app/ # Next.js 15+ App Router
│ ├── [locale]/ # 多语言路由
│ ├── api/ # API 路由
│ └── globals.css # 全局样式
├── components/ # React 组件
│ ├── ui/ # 基础 UI 组件
│ ├── auth/ # 认证相关组件
│ └── profile/ # 用户资料组件
├── lib/ # 工具库
│ ├── auth.ts # NextAuth 配置
│ ├── sanity.ts # Sanity 客户端
│ └── translations/ # 多语言翻译
├── hooks/ # 自定义 Hooks
├── types/ # TypeScript 类型定义
└── public/ # 静态资源
我们欢迎所有形式的贡献!
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
- 使用 TypeScript 进行类型安全开发
- 遵循 ESLint 和 Prettier 配置
- 编写清晰的提交信息
- 添加适当的测试用例
本项目采用 MIT 许可证。
如果这个项目对您有帮助,请给我们一个 ⭐️!
由 ItusiAI 制作
© 2025 Get CMS. All rights reserved.