Joo 是一个基于 PICFLOW 构建的全栈图片分享社区平台,采用瀑布流布局,为用户提供优雅的图片浏览和分享体验。
核心特性
瀑布流首页
首页采用自适应瀑布流(Masonry)布局,图片卡片高度根据原始比例自动计算,充分利用屏幕空间。支持明暗双主题切换,CSS 变量驱动,切换无闪烁。
智能推荐引擎 v3.0
PICFLOW 内置六因子评分推荐算法:
- 标签匹配(权重 35%):用户偏好标签与图片标签的交集
- 标签权重(权重 15%):偏好标签的累积权重
- 上传者偏好(权重 15%):用户对特定上传者的偏好
- 协同过滤(权重 15%):相似用户的收藏
- 新鲜度(权重 10%):发布时间衰减
- 热度(权重 10%):点赞 ×2 + 浏览 ×0.5
系统从四个来源收集候选图片(标签匹配、上传者偏好、协同过滤、热门兜底),进行评分排序后,再通过多样性过滤器确保不会过度集中单一分类。
多云存储支持
一套统一的存储抽象层,支持三种后端无缝切换:
| 后端 | 适用场景 |
|---|---|
| 本地存储 | 小规模 / 个人部署 |
| 阿里云 OSS | 生产环境,CDN 加速 |
| 腾讯云 COS | 生产环境,CDN 加速 |
用户可独立选择偏好的存储后端,图片命名采用 {timestamp}_{16-hex}.{ext} 格式。
AI 内容审核
支持接入多种 AI 服务进行图片内容安全检测:
- OpenAI GPT-4 Vision
- 阿里云内容安全 API
- 腾讯云图片审核
定时任务每小时自动扫描新上传图片,违规内容自动软删除,累计违规自动封禁。
RESTful API
提供 18 个 API 端点,Bearer Token 鉴权,覆盖认证、用户、图片、互动、发现、版本管理等全部功能,可用于构建移动端和第三方客户端。
管理后台
25+ 个功能页面的管理面板,涵盖用户管理、图片管理、标签管理、回收站、推荐引擎测试、内容审核、数据分析、操作日志、站点设置、公告管理、邮件管理、版本管理等。
技术架构
技术栈:PHP 8.0+ / MySQL 8.0 / PHPMailer / uni-app (Vue 3)
数据库:13 张表(users, categories, images, image_tags, likes, browse_history, user_tag_prefs, user_uploader_prefs, email_verifications, change_logs, announcements, site_settings, app_versions),全部 InnoDB + utf8mb4。
安全特性
- bcrypt 密码哈希
- CSRF Token 防护
- PDO 参数化查询
- 登录频率限制(5 次/IP/5分钟)
- 洪水攻击自动封禁
- 图片 MIME + 扩展名双重校验
- API Token SHA-256 哈希存储
- 软删除 + 回收站机制
项目地址
完整文档:Joo Wiki