Files
chengshishouce/README.md
mashen c866e74ece Initial commit: React + Django 城市手册项目
- Django 4.2 + DRF + JWT + GraphQL
- React 18 + MobX + styled-components
- PostgreSQL 数据库
- Docker + Docker Compose + Nginx
- 完整的功能模块(用户、版块、文章、服务、交互、版主管理)
- 完整的文档(需求、部署、测试)
2026-04-09 13:56:02 +00:00

204 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# React + Django Full-Stack Project
## 项目信息
**项目名称:** 城市手册CityWiki
**项目定位:** 地方志兼本地生活服务平台
**技术栈:** React + Django + PostgreSQL + Docker
## 功能特性
- ✅ 用户认证系统注册、登录、JWT
- ✅ 版块层级管理(省→市→县→乡镇→村)
- ✅ 文章管理(创建、审核、发布)
- ✅ 特色服务(衣食住行娱乐旅游文化)
- ✅ 交互功能(评论、评分、点赞、收藏)
- ✅ 版主管理(申请、权限、审核)
- ✅ 内容审核流程(版主初审 + AI 审核)
## 技术栈
### Backend
- Django 4.2
- Django REST Framework
- JWT Authentication (djangorestframework-simplejwt)
- GraphQL (graphene-django)
- PostgreSQL
### Frontend
- React 18 (Create React App)
- MobX (状态管理)
- styled-components (CSS-in-JS)
- React Router
### Deployment
- Docker & Docker Compose
- Nginx (反向代理)
## Project Structure
```
.
├── backend/ # Django project
│ ├── config/ # Settings and configuration
│ ├── apps/ # Django apps
│ ├── static/ # Static files
│ └── media/ # Media files
├── frontend/ # React project
│ ├── src/
│ │ ├── components/
│ │ ├── stores/ # MobX stores
│ │ ├── services/ # API calls
│ │ └── styles/
│ └── public/
├── docker-compose.yml
└── .env.example
```
## 快速开始
### 1. 克隆项目
```bash
git clone http://10.2.0.100:8989/mashen/chengshishouce.git
cd chengshishouce
```
### 2. 环境变量配置
```bash
cp .env.example .env
# 编辑 .env 文件,配置数据库和其他设置
```
### 3. 后端启动
```bash
cd backend
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 运行迁移
python manage.py migrate
# 创建超级用户
python manage.py createsuperuser
# 启动开发服务器
python manage.py runserver
```
### 4. 前端启动
```bash
cd frontend
# 安装依赖
npm install
# 启动开发服务器
npm start
```
### 5. 访问应用
- 前端http://localhost:3000
- 后端 APIhttp://localhost:8000
- GraphQLhttp://localhost:8000/graphql
- Django Adminhttp://localhost:8000/admin
## Docker 部署
```bash
# 构建并启动所有服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
```
详细部署指南请参考 [DEPLOYMENT.md](./DEPLOYMENT.md)
## 项目文档
- [需求文档](./城市手册需求文档.md) - 项目需求说明
- [实施计划](./REQUIREMENTS_IMPLEMENTATION.md) - 需求实施进度
- [部署指南](./DEPLOYMENT.md) - 详细部署说明
- [技术文档](./PROJECT_DOCS.md) - 架构和技术文档
- [API 测试](./TESTING.md) - API 测试指南
## API Endpoints
### REST API
- `/api/users/` - User management
- `/api/users/me/` - Current user
- `/api/auth/token/` - Login (POST)
- `/api/auth/token/refresh/` - Refresh token (POST)
### GraphQL
- `/graphql/` - GraphQL endpoint
- `/graphql/?graphiql` - GraphQL playground
## Development
### Running Backend
```bash
cd backend
python manage.py runserver
```
### Running Frontend
```bash
cd frontend
npm start
```
### Running Tests
Backend:
```bash
cd backend
python manage.py test
```
Frontend:
```bash
cd frontend
npm test
```
## Production Deployment
### Using Docker Compose
1. Update `.env` with production values
2. Build images: `docker-compose build`
3. Start services: `docker-compose up -d`
### Nginx Configuration
The frontend Dockerfile includes nginx configuration that:
- Serves React app
- Proxies `/api` requests to Django backend
- Proxies `/graphql` requests to Django backend
- Handles static and media files
## Security Notes
- **Never commit `.env` files**
- Change `DJANGO_SECRET_KEY` in production
- Use strong passwords for database
- Enable HTTPS in production
- Configure `ALLOWED_HOSTS` properly
- Set `DEBUG=False` in production
## License
MIT