# 同趣U (InterestU) - 大学生兴趣社交平台 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) **同趣U (InterestU)** 是一款专为在校大学生设计的移动社交应用,旨在帮助他们基于共同的兴趣爱好轻松发现伙伴、组织活动、拓展社交圈,让大学生活更加丰富多彩。 ## 项目组成 本项目仓库包含以下主要部分: * **`tongqu_backend_v2/`**: Django后端服务项目。 * **`同趣U.html`**: (早期的静态页面原型) ## 后端项目 (`tongqu_backend_v2/`) 这是“同趣U”应用的后端服务部分,基于Django和Django REST framework构建。 ### 项目背景 (后端) 为前端App提供稳定、高效、安全的接口支持,解决大学生在兴趣社交中遇到的信息不对称、平台错位、连接障碍、活动分散等痛点。 ### 核心目标 (后端) * **用户管理与认证:** 提供安全可靠的用户注册、登录、资料管理、JWT认证等功能。 * **兴趣系统:** 允许用户定义和关联兴趣标签,为匹配提供基础。 * **小组/圈子系统:** 支持用户创建、加入、管理兴趣小组,并在组内互动。 * **内容发布:** 允许用户在小组内发布帖子/动态。 * **匹配与发现:** 基于兴趣等因素推荐用户。 * **数据持久化:** 使用PostgreSQL数据库。 * **API接口:** 提供清晰、规范的RESTful API供前端App调用。 ### 主要功能 (当前进度) * **用户系统 (v0.2):** * 自定义用户模型 (`CustomUser`),包含邮箱、手机号、昵称、头像、简介、学校等。 * 使用 `CustomUserManager` 处理用户创建。 * **API (DRF + SimpleJWT):** * 用户注册 (含头像上传,返回JWT)。 * 用户登录 (邮箱+密码,返回JWT Access/Refresh Token)。 * 刷新Access Token。 * 获取/更新当前登录用户个人资料 (需认证,支持头像和兴趣标签更新)。 * **兴趣标签系统 (v0.1):** * `InterestTag` 模型。 * `CustomUser` 与 `InterestTag` 多对多关联。 * Admin后台管理兴趣标签。 * **API:** * 获取兴趣标签列表 (只读)。 * 获取单个兴趣标签详情 (只读)。 * **匹配与发现 (v0.1 - 初步):** * **API:** * 获取与当前登录用户有共同兴趣的推荐用户列表 (需认证,显示共同兴趣标签)。 * **兴趣圈子/小组系统 (v0.2):** * `Group` 模型 (名称、描述、封面、创建者、兴趣标签等)。 * `Membership` (中间) 模型管理用户与小组的多对多关系 (含加入时间)。 * Admin后台管理小组和成员关系。 * **API:** * 创建小组 (需认证,创建者自动成为成员并可关联兴趣标签,支持封面上传)。 * 获取小组列表 (公开可读)。 * 获取单个小组详情 (公开可读)。 * 用户加入小组 (需认证)。 * 用户退出小组 (需认证)。 * 获取当前用户加入的小组列表 (需认证)。 * **小组内帖子/动态功能 (v0.1):** * `Post` 模型 (关联小组、作者,含标题、内容)。 * Admin后台管理帖子。 * **API (集成在GroupViewSet及独立的PostViewSet中):** * 在指定小组内创建帖子 (`POST /api/v1/groups//create-post/`,需认证,作者自动设置为当前用户)。 * 获取指定小组内的帖子列表 (`GET /api/v1/groups//posts/`,需认证)。 * 获取所有帖子列表 (`GET /api/v1/posts/`,需认证)。 * 获取单个帖子详情 (`GET /api/v1/posts//`,需认证)。 * 更新自己的帖子 (`PUT/PATCH /api/v1/posts//`,需认证且为作者)。 * 删除自己的帖子 (`DELETE /api/v1/posts//`,需认证且为作者)。 * 通过 `/api/v1/posts/` 路径创建帖子的权限已限制为管理员,并提示使用小组接口。 ### 技术栈 (后端) * **后端框架:** Python 3.x, Django 5.2.x, Django REST framework * **数据库:** PostgreSQL * **认证:** JWT (JSON Web Tokens) via djangorestframework-simplejwt * **图片处理:** Pillow * **Web服务器 (部署时):** Gunicorn (或 uWSGI) * **反向代理 (部署时):** Nginx * **版本控制:** Git ### 环境搭建与运行 (后端 `tongqu_backend_v2/` 目录内) 1. **前提条件:** * Python 3.8+ * PostgreSQL 12+ * Git 2. **克隆仓库 (如果从远程开始):** ```bash # 如果将 D:\new_projects 作为仓库根,则克隆整个项目 git clone http://git.fmode.cn:3000/0225015/tongquU.git cd tongquU/tongqu_backend_v2 # 进入后端项目目录 ``` 3. **创建并激活Python虚拟环境:** ```bash python -m venv venv # Windows PowerShell: .\venv\Scripts\Activate.ps1 # Linux/macOS: # source venv/bin/activate ``` 4. **安装依赖:** ```bash pip install -r requirements.txt ``` 5. **配置数据库:** * 确保PostgreSQL服务正在运行。 * 在PostgreSQL中创建一个数据库 (例如 `tongqu_v2_db`)。 * 修改 `tongqu_backend_v2/config/settings.py` 文件,配置 `DATABASES` 部分。 6. **进行数据库迁移:** ```bash python manage.py makemigrations python manage.py migrate ``` 7. **创建超级用户:** ```bash python manage.py createsuperuser ``` 8. **运行开发服务器:** ```bash python manage.py runserver ``` 服务将在 `http://127.0.0.1:8000/` 启动。 ### API 端点前缀 (后端) * 所有用户账户相关API: `/api/v1/accounts/` * 所有小组相关API: `/api/v1/groups/` * 所有帖子直接操作API: `/api/v1/posts/` * (兴趣标签API通过 `/api/v1/accounts/tags/` 访问) *(更详细的API文档后续会通过Swagger/OpenAPI提供)* ## 如何贡献 *(保持你之前的贡献说明即可,或者根据需要修改)* 我们欢迎各种形式的贡献!如果您对本项目感兴趣,可以通过以下方式参与: 1. **Fork** 本仓库 (如果项目公开) 2. 创建您的特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交您的更改 (`git commit -m 'Add some AmazingFeature'`) 4. 将您的更改推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启一个 **Pull Request** 请确保您的代码遵循项目的编码规范,并添加必要的测试。 ## 许可证 本项目采用 [MIT许可证](LICENSE.md)。