同好网 (GoodFriends)
一个基于兴趣标签并按距离排序的同城/跨城交友平台。
源代码:https://gitlab.com/redstoneleo/goodfriends
功能特性
核心功能
- 🔐 多种登录方式:邮箱、微信、Google OAuth2
- 📍 地理位置匹配:基于PostGIS的距离排序
- 🏷️ 兴趣标签系统:使用django-taggit实现
- 💌 联系方式交换:安全的联系方式分享机制
- 🔍 智能搜索:多维度筛选和搜索
- 📱 移动优先:响应式设计,完美适配移动设备
用户系统
- 分步引导的资料填写流程
- 资料审核机制
- 用户状态管理(公开/隐藏/审核中等)
- 浏览记录追踪
通知系统
- 站内消息
- 邮件通知
- 微信公众号推送(可选)
安全机制
- 每日联系方式交换限制
- 举报系统
- 风控机制
技术栈
后端
- Django 4.2 - Web框架
- PostgreSQL + PostGIS - 数据库和地理信息处理
- django-allauth - 认证系统
- django-taggit - 标签系统
- Celery + Redis - 异步任务处理
前端
- Bootstrap 5 - UI框架
- Tagify.js - 标签输入组件
- 百度地图API - 地理位置服务
快速开始
环境要求
- Python 3.8+
- PostgreSQL 12+ (with PostGIS extension)
- Redis 6+
安装步骤
- 克隆项目
git clone <repository-url>
cd goodfriends
- 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
- 安装依赖
pip install -r requirements.txt
- 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入相应的配置信息
- 配置数据库
-- 在PostgreSQL中创建数据库和启用PostGIS扩展
CREATE DATABASE goodfriends;
\c goodfriends;
CREATE EXTENSION postgis;
- 运行迁移
python manage.py makemigrations
python manage.py migrate
- 创建超级用户
python manage.py createsuperuser
- 启动开发服务器
python manage.py runserver
- 启动Celery(另开终端)
celery -A goodfriends worker -l info
- 启动Redis
redis-server
项目结构
goodfriends/
├── goodfriends/ # 项目配置
├── accounts/ # 用户账户应用
├── profiles/ # 用户资料应用
├── notifications/ # 通知系统应用
├── reports/ # 举报系统应用
├── templates/ # 模板文件
├── static/ # 静态文件
├── media/ # 媒体文件
├── locale/ # 国际化文件
├── requirements.txt # Python依赖
└── README.md
配置说明
必需配置
SECRET_KEY: Django密钥DB_*: 数据库连接信息REDIS_URL: Redis连接地址EMAIL_*: 邮件服务配置AMAP_API_KEY: 百度地图API密钥
可选配置
WECHAT_*: 微信公众号配置GOOGLE_OAUTH2_*: Google OAuth2配置
部署
生产环境配置
- 设置
DEBUG=False - 配置
ALLOWED_HOSTS - 使用生产级数据库
- 配置静态文件服务
- 设置HTTPS
- 配置日志记录
Docker部署
# 构建镜像
docker build -t goodfriends .
# 运行容器
docker-compose up -d
许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

被折叠的 条评论
为什么被折叠?



