Profile2026年07月17日
5阅读

技术信息

语言技术
Android
系统类型
Android应用
行业分类
社交
参考价格
10000

作品详情

行业场景

1.立项原因:传统社交应用普遍存在用户匹配效率低、真实位置信息缺失、隐私保护不足等问题,导致用户间信任度低、互动意愿弱。本项目旨在打造一款基于实时地理位置的同城交友产品,通过精准的距离感知和轻量化互动(如附近的人列表、主动推送)降低社交门槛,同时兼顾用户隐私(距离模糊化)与防骚扰机制(推送限流),解决“线上聊很久却不知对方在哪儿”的痛点,提升线下转化效率。

2.业务背景:当前同城社交市场以“附近的人”为核心功能,但大多应用要么过度依赖用户主动刷新,要么推送骚扰频繁。本项目面向 18-35 岁城市青年,提供手机号一键登录、位置自动上报、头像上传、附近用户浏览及定向推送通知等基础服务,适用于聚会、拼车、运动组局等线下场景。业务模式上支持后续接入会员增值(如精准筛选、超级曝光),具备从 MVP 快速迭代为商业化产品的能力。

功能介绍

功能模块:项目包含以下核心模块——
用户认证:手机号 + 短信验证码登录(调试模式返回验证码),JWT 无状态 Token 管理。
位置服务:用户位置上报(经纬度存入 PostGIS),附近的人查询(基于球面距离排序,支持模糊化显示)。
推送通知:基于 FCM(Firebase Cloud Messaging)的异步推送,配合 Redis 实现每日 5 次、每次间隔 10 分钟的推送限流,避免骚扰。
图片上传:头像上传至本地目录,支持反代后的绝对 URL 生成,前端自动展示。
用户管理:更新 FCM Token、个人资料(昵称、年龄、性别、简介)。
后台管理(隐含):通过数据库可直接维护,后续可扩展管理面板。
主要功能描述:用户首次登录时自动创建账号(以手机号后四位为默认昵称),登录后 App 自动申请定位权限并每 5 分钟上报一次经纬度;首页“附近的人”列表展示 10km 内的其他用户,距离以“

项目实现

我负责的具体任务:在本项目中,我完成了从 0 到 1 的全栈开发——包括环境搭建(Docker 化 PostgreSQL+PostGIS+Redis)、后端异步 API 设计(FastAPI 路由、依赖注入、ORM 模型)、JWT 认证中间件、短信验证码的 Redis 缓存逻辑、地理位置查询的 SQL 优化(GeoAlchemy2)、FCM 推送服务封装、图片上传与静态托管;同时编写了 Flutter 前端页面(登录、附近列表、头像上传)、权限处理、周期性位置上报、FCM 集成与本地通知展示,并配置了 Android 签名与 Release APK 打包。
技术栈与亮点难点:
技术栈:后端为 Python 3.10 + FastAPI + SQLAlchemy(异步)+ Alembic + GeoAlchemy2(PostGIS 扩展),缓存与限流使用 Redis(异步客户端),推送依赖 Firebase Admin SDK;前端为 Flutter + Dio + Provider(未使用但已引入)+ Geolocator + ImagePicker + firebase_messaging;容器化采用 Docker Compose。

实现亮点:① 地理位置查询使用 ST_DWithin 和 Geography 类型,性能优于单纯的距离计算,且通过 GIST 索引(上线前添加)可支持高并发;② 推送限流结合 Redis 的过期 key 和日期计数,实现“每日上限 + 时间间隔”双重控制,且 Redis 故障时自动降级(拒绝推送),保证系统韧性;③ 头像 URL 支持 X-Forwarded-* 头,方便 Nginx 反代后仍生成正确链接,适配生产环境。
难点攻克:① 异步环境下 Firebase 初始化需单例处理,且证书缺失时优雅降级,通过日志告警;② 前端在真机调

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论