一个现代化的问答平台,基于 React 和 Node.js 构建。用户可以免登录提问,管理员登录后可以回复问题。所有问题和回复都公开显示。
-
📝 用户功能
- 免登录提问
- 实时查看所有问题和回复
- 响应式设计,移动端友好
-
👨💼 管理员功能
- 安全的登录系统
- 回复用户问题
- 编辑和删除自己的回复
- 删除不当问题
- 管理面板统计
-
🎨 界面设计
- 现代化UI设计
- Tailwind CSS样式
- 优雅的交互体验
- Node.js (v14+)
- MySQL数据库
- npm 或 yarn
- 克隆仓库
git clone <repository-url>
cd Q&A
- 安装依赖
npm run install-all
- 配置环境变量
cp server/config.env.example server/.env
编辑 .env
文件,设置数据库连接信息。
- 创建数据库
CREATE DATABASE qa_platform;
- 启动应用
# 开发环境
npm run dev
# 生产环境
npm run build
npm start
详细的安装和配置说明请参考 开发指南。
- Node.js + Express
- MySQL数据库
- JWT认证
- bcryptjs密码加密
- 输入验证
- React 18
- React Router
- Axios HTTP客户端
- Tailwind CSS
- 响应式设计
我们欢迎所有形式的贡献,无论是新功能、bug修复还是文档改进。请遵循以下步骤:
- Fork 本仓库
- 创建新的功能分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m '添加一些新功能'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 创建 Pull Request
本项目采用 MIT 协议开源,详情请参见 LICENSE 文件。
如有问题或建议,请提交 Issue 或 Pull Request。
感谢所有为这个项目做出贡献的开发者们!
- 初始版本发布
- 基础问答功能
- 管理员系统
- 响应式设计
POST /api/auth/login
- 管理员登录POST /api/auth/create-admin
- 创建管理员账户
GET /api/questions
- 获取所有问题GET /api/questions/:id
- 获取单个问题POST /api/questions
- 用户提交问题POST /api/questions/:id/answers
- 管理员回复问题(需要认证)DELETE /api/questions/:id
- 删除问题(需要认证)
PUT /api/answers/:answerId
- 管理员修改回复(需要认证)DELETE /api/answers/:answerId
- 管理员删除回复(需要认证)
Q&A/
├── client/ # 前端React应用
│ ├── public/
│ │ ├── components/ # 组件
│ │ ├── context/ # React Context
│ │ ├── pages/ # 页面组件
│ │ ├── services/ # API服务
│ │ └── ...
│ └── package.json
├── server/ # 后端Express应用
│ ├── config/ # 配置文件
│ ├── middleware/ # 中间件
│ ├── routes/ # 路由
│ └── package.json
├── package.json # 主项目配置
└── README.md
- id: 主键
- username: 用户名(唯一)
- password: 加密密码
- created_at: 创建时间
- id: 主键
- title: 问题标题
- content: 问题内容
- author_name: 提问者姓名
- author_email: 提问者邮箱(可选)
- created_at: 创建时间
- updated_at: 更新时间
- id: 主键
- question_id: 问题ID(外键)
- content: 回答内容
- admin_id: 管理员ID(外键)
- created_at: 创建时间
- updated_at: 更新时间
-
安全性
- 所有API输入都经过验证
- 密码使用bcrypt加密
- JWT用于管理员认证
- SQL注入防护
-
性能优化
- 数据库连接池
- 前端懒加载
- 图片优化
-
用户体验
- 响应式设计
- 加载状态提示
- 错误处理
- 表单验证