# 同趣U (InterestU) - 大学生兴趣社交平台 [Backend] [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) **同趣U (InterestU)** 是一款专为在校大学生设计的移动社交应用,旨在帮助他们基于共同的兴趣爱好轻松发现伙伴、组织活动、拓展社交圈,让大学生活更加丰富多彩。本项目是“同趣U”应用的后端服务部分。 ## 项目背景 在当前的大学校园中,学生们拥有多元的兴趣和强烈的社交需求,但常常面临以下痛点: * **信息不对称:** 难以高效找到与自己有相同小众或特定兴趣的伙伴。 * **平台错位:** 现有通用社交平台难以满足纯粹基于兴趣的连接需求。 * **连接障碍:** 主动发起线下或线上连接存在一定的社交压力。 * **活动分散:** 校园内外的兴趣活动信息零散,不易发现和组织。 “同趣U”后端服务旨在解决这些问题,为前端App提供稳定、高效、安全的接口支持。 ## 核心目标 (后端) * **用户管理:** 提供安全可靠的用户注册、登录、资料管理等功能。 * **兴趣匹配:** 支持基于兴趣标签的数据存储与检索,为前端实现精准匹配提供基础。 * **互动支持:** 为私信、小组、活动等社交场景提供API接口。 * **数据持久化:** 使用PostgreSQL数据库安全存储用户信息、兴趣数据、社交关系等。 * **API接口:** 提供清晰、规范的RESTful API供前端App调用。 ## 主要功能 (当前进度及规划) ### 已实现/进行中 (示例,请根据你的实际进度修改) * **用户系统 (v0.1):** * 基于Django自定义User模型,包含手机号、头像、简介、学校等字段。 * 使用Django REST framework 和 djangorestframework-simplejwt 实现用户注册、登录(JWT认证)、获取用户信息的API接口。 * 配置PostgreSQL数据库连接。 ### 规划中 * **兴趣标签系统:** * 用户兴趣标签的创建、选择、展示。 * 基于兴趣标签的推荐算法初步设计。 * **匹配与发现:** * 实现基于共同兴趣的用户推荐API。 * **即时通讯 (私信):** * WebSocket基础搭建或选择第三方服务。 * 私信消息存储与API接口。 * **兴趣圈子/小组:** * 小组创建、加入、管理API。 * 小组内动态发布与查看API。 * **活动发布与匹配:** * 活动创建、报名、管理API。 * **校园认证流程。** * **更完善的错误处理、日志记录和单元测试。** ## 技术栈 * **后端框架:** Python 3.x, Django, Django REST framework * **数据库:** PostgreSQL * **认证:** JWT (JSON Web Tokens) via djangorestframework-simplejwt * **Web服务器 (部署时):** Gunicorn (或 uWSGI) * **反向代理 (部署时):** Nginx * **版本控制:** Git ## 环境搭建与运行 ### 前提条件 * Python 3.8+ * PostgreSQL 12+ * Git ### 本地开发步骤 1. **克隆仓库 (如果已推送到远程):** ```bash git clone http://git.fmode.cn:3000/0225015/tongquU.git cd tongquU ``` 或者如果你是在本地新初始化的项目,直接进入项目目录。 2. **创建并激活Python虚拟环境:** ```bash python -m venv venv # Windows CMD: # venv\Scripts\activate # Windows PowerShell: # .\venv\Scripts\Activate.ps1 # Linux/macOS: # source venv/bin/activate ``` 3. **安装依赖:** *(建议创建一个 `requirements.txt` 文件)* ```bash pip install django djangorestframework djangorestframework-simplejwt psycopg2-binary # 如果有 requirements.txt: # pip install -r requirements.txt ``` 4. **配置数据库:** * 确保PostgreSQL服务正在运行。 * 在PostgreSQL中创建一个名为 `tongquu_db` (或其他你指定的名字) 的数据库。 ```sql -- (在psql中) CREATE DATABASE tongquu_db; -- CREATE USER tongquu_user WITH PASSWORD 'your_password'; -- 可选 -- GRANT ALL PRIVILEGES ON DATABASE tongquu_db TO tongquu_user; -- 可选 ``` * 修改项目中的 `tongqu_project/settings.py` 文件,配置 `DATABASES` 部分: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'tongquu_db', 'USER': 'postgres', # 或者你创建的专用用户 'PASSWORD': 'your_postgres_password', # 你的PostgreSQL密码 'HOST': 'localhost', 'PORT': '5432', } } ``` 5. **配置自定义用户模型 (如果尚未完成):** * 在 `accounts/models.py` 中定义 `CustomUser`。 * 在 `tongqu_project/settings.py` 中设置 `AUTH_USER_MODEL = 'accounts.CustomUser'`。 6. **进行数据库迁移:** ```bash python manage.py makemigrations accounts python manage.py migrate ``` 7. **创建超级用户 (用于访问Django Admin):** ```bash python manage.py createsuperuser ``` 8. **运行开发服务器:** ```bash python manage.py runserver ``` 服务将在 `http://127.0.0.1:8000/` 启动。 ## API 端点 (示例) * **注册:** `POST /api/v1/accounts/register/` * **登录 (获取Token):** `POST /api/v1/accounts/login/` (或 `POST /api/v1/accounts/token/`) * **刷新Token:** `POST /api/v1/accounts/token/refresh/` * **获取/更新用户资料:** `GET/PUT /api/v1/accounts/profile/` (需认证) *(更多端点将随功能开发添加)* ## 如何贡献 (示例) 我们欢迎各种形式的贡献!如果您对本项目感兴趣,可以通过以下方式参与: 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)。 ---