一个现代化的技术社区平台,提供技术文章发布和问答功能。
-
📝 技术文章管理
- 支持 Markdown 编辑
- 文章版本控制
- 标签分类
- 搜索功能
-
💬 问答系统
- 提问和回答
- 最佳答案标记
- 标签分类
- 搜索功能
-
👥 用户系统
- 用户注册和登录
- 角色管理(普通用户/编辑)
- 个人仪表盘
- 前端框架: Next.js 13+ (App Router)
- UI 框架: Tailwind CSS
- 数据库: MongoDB
- 认证: NextAuth.js
- 编辑器: React MD Editor
- 包管理: pnpm
- Node.js >= 18.12
- MongoDB >= 4.4
- Docker (可选,用于运行数据库)
确保你的系统安装了正确版本的 Node.js:
# 使用 nvm 安装并切换到 LTS 版本
nvm install --lts
nvm use --lts
# 验证 Node.js 版本 (需要 >= 18.12)
node --version# 安装 pnpm (如果尚未安装)
npm install -g pnpm
# 安装项目依赖
pnpm install创建 docker-compose.yml 文件:
version: '3.8'
services:
mongodb:
image: mongo:latest
container_name: tech_blog_mongodb
ports:
- "27017:27017"
volumes:
- mongodb_data:/data/db
environment:
- MONGO_INITDB_DATABASE=tech_blog
volumes:
mongodb_data:启动 MongoDB:
# 启动数据库
docker-compose up -d
# 验证数据库状态
docker ps项目提供了 .env.example 文件作为环境变量配置模板。你需要创建 .env 文件并设置以下环境变量:
# 数据库连接
MONGODB_URI=mongodb://localhost:27017/tech_blog
# NextAuth.js 配置
NEXTAUTH_SECRET=your-secret-key-here # 使用 openssl rand -base64 32 生成一个安全的密钥
NEXTAUTH_URL=http://localhost:3000
# API 配置
NEXT_PUBLIC_API_URL=http://localhost:3000
# 环境模式
NODE_ENV=development重要说明:
- 复制
.env.example到.env文件:cp .env.example .env - 修改
.env文件中的值,特别是NEXTAUTH_SECRET .env文件包含敏感信息,不要提交到版本控制系统中- 确保所有环境变量都已正确设置,否则应用可能无法正常运行
# 安装 tsx (如果尚未安装)
pnpm add -D tsx
# 运行数据库种子脚本
pnpm run seed这将创建:
- 示例用户(普通用户和编辑)
- 示例文章
- 示例问答
# 启动 Next.js 开发服务器
pnpm dev现在你可以访问:
# 停止 Next.js 服务器
按 Ctrl+C
# 停止并移除 MongoDB 容器
docker-compose downsrc/
├── app/ # Next.js 13 App Router 目录
│ ├── (auth)/ # 认证相关页面
│ ├── (main)/ # 主要页面
│ └── api/ # API 路由
├── components/ # React 组件
├── lib/ # 工具函数和配置
├── models/ # MongoDB 模型
└── types/ # TypeScript 类型定义
- 文章支持版本控制,每次编辑都会创建新版本
- 编辑可以审核和管理所有文章
- 普通用户只能管理自己的文章
- 用户可以提问和回答问题
- 问题作者可以标记最佳答案
- 支持按标签筛选和搜索
- 普通用户:发布文章、提问和回答
- 编辑:额外具有内容审核权限
- Fork 项目
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
MIT