同好网:基于兴趣标签和地理距离的社交平台
网址 :https://goodfriends.social
源代码 :https://gitlab.com/redstoneleo/goodfriends
作品功能 :帮助用户通过兴趣标签筛选距离由近到远的有共同兴趣爱好的朋友。
目标用户 :年轻人为主。
应用场景 :想找到有共同兴趣爱好的朋友、想找搭子一起出去玩、想约coffee chat互相聊聊天、想拓宽朋友圈、想找对象、甚至是想招人,同好网都可以帮到你!
主要亮点 :同好网是一个纯粹的基于兴趣爱好的社交网站,帮助你通过兴趣爱好搜索到距你由近到远的有共同兴趣爱好的朋友,就这么一个简单的功能就可以满足诸多应用场景,可谓是功能简单但用途绝不简单!
功能特性 ¶
核心功能 ¶
- 多种登录方式:邮箱、微信、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 文件了解详情
MathJoy