Skip to content

li88iioo/Photonix

Repository files navigation

Photonix | 光影画廊

Node.js Docker License GitHub activity PWA

一个极简、AI 驱动的智能相册,专为现代 Web 设计。它集成了 PWA、流式加载、多数据库架构和高性能缓存,旨在提供极致的浏览体验和智能的交互方式。


✨ 核心亮点

🎭 AI 智能交互

  • AI 画中密语:AI 扮演照片人物,通过第一人称视角提供沉浸式对话体验。
  • 全模型支持:兼容 OpenAI (GPT-4V)、Claude-3、Gemini 等主流视觉模型。
  • 极致隐私:对话历史仅存于浏览器 IndexedDB,支持导入导出,后端绝不触碰私密数据。
  • 高性能架构:内置 AI 微服务,采用内存队列与 Redis 持久化缓存,大幅降低 API 调用成本。

📥 资源订阅中心

  • 多源订阅:支持 RSS/Atom 协议,自动同步外部图库(如 Pinterest, Pixiv 等)的媒体流。
  • 智能爬虫:基于任务调度器 (TaskScheduler) 的并发控制,支持断点续传与重试机制。

🚀 极致性能

  • 多库并发:主库/设置库/索引库分离,彻底解决 SQLite 锁竞争,提升高并发下的响应速度。
  • 流式加载:自研图片流式渲染技术,海量照片也能瞬间秒开。
  • Worker 线程池:缩略图生成、索引重建、视频 HLS 处理全部在独立线程运行,不阻塞主进程。

🏗️ 架构设计

graph TD
    User((用户)) <-->|HTTP/SSE| WebApp[Frontend SPA / PWA]
    WebApp <-->|API| Backend[Express Server]
    
    subgraph "Core Services"
        Backend <--> AI[AI Microservice]
        Backend <--> Downloader[Download & RSS Service]
        Backend <--> WorkerManager[Worker Manager]
    end

    subgraph "Storage Layer"
        Backend <--> Redis[(Redis Cache)]
        WorkerManager --> gallery_db[(gallery.db)]
        WorkerManager --> index_db[(index.db)]
        Backend <--> settings_db[(settings.db)]
    end

    subgraph "Workers"
        WorkerManager --> TW[Thumbnail Worker]
        WorkerManager --> IW[Indexing Worker]
        WorkerManager --> VP[Video Processor]
    end

    AI <--> LLM[External LLM Providers]
Loading

🚀 快速开始

🐳 方式一:使用 Docker (推荐)

最快速的部署方式,无需配置开发环境。

  1. 环境准备:确保已安装 Docker 和 Docker Compose。
  2. 下载配置
    mkdir -p photonix && cd photonix
    curl -O https://raw.githubusercontent.com/li88iioo/Photonix/main/docker-compose.ghcr.yml
    mv docker-compose.ghcr.yml docker-compose.yml
  3. 初始化环境
    curl -o .env https://raw.githubusercontent.com/li88iioo/Photonix/main/env.example/env.example
    # 生成随机密钥
    sed -i "s/CHANGE_ME_TO_A_SECURE_32_PLUS_CHAR_STRING/$(openssl rand -base64 48 | tr -d '\n')/" .env
  4. 启动
    docker compose up -d

🔧 方式二:本地开发部署

适合需要二次开发的用户。完整流程请参考 本地开发环境指南

git clone https://github.com/li88iioo/Photonix.git
cd Photonix

# 1. 安装后端依赖
cd backend && npm install

# 2. 安装前端依赖并构建
cd ../frontend && npm install && npm run build

# 3. 详细的联调与环境配置
# 请务必查阅 docs/development.md 进行后续操作

📖 深度文档


⚙️ 关键配置

Photonix 提供了极细粒度的配置项,详见 ENV_GUIDE.md

变量名 说明 建议值
JWT_SECRET 令牌签名密钥 随机 32+ 位强字符串
ADMIN_SECRET 管理员操作密钥 务必手动修改,严禁默认
TRUST_PROXY 反向代理支持 使用 Nginx 时设为 1
NUM_WORKERS 后台 Worker 数量 推荐 CPU 核心数 - 1
AI_DAILY_LIMIT 每日前端 AI 配额 1-10000 间自定
REDIS_URL 缓存地址 redis://redis:6379

Important

安全警示ADMIN_SECRET 是执行删除相册、修改系统设置等敏感操作的唯一凭证,请务必妥善保管。


🎹 交互快捷键

快捷键 功能 说明
S 聚焦搜索框 快速进入搜索模式
F 切换全屏模式 沉浸式浏览体验
R 刷新当前页面 重新加载内容
H 返回首页 快速回到主页 (#/)
G 切换布局模式 在网格 (Grid) 与瀑布流 (Masonry) 间切换
B 切换模糊模式 一键开启/关闭隐私保护模糊
ESC 关闭模态框/返回 退出当前操作或关闭预览
← / → 媒体导航 在预览模式下切换上一张/下一张
1 - 9 快速导航 快速打开当前页面中第 N 张图片

🖐️ 触摸手势 (移动端优化)

手势 功能 说明
单指左右滑动 切换图片 在预览模式下,快速切换上一张或下一张媒体。
双指捏合 / 双击 缩放图片 在预览模式下,自由缩放或快速 1x/2x 缩放查看细节。
三指轻触 切换模糊 在任意界面,快速切换全局模糊模式以保护隐私。

🛠️ 运维与监控

  • 健康检查:访问 /health 实时获取数据库与服务负载状态。
  • 监控指标
    • /api/metrics/cache:Redis 缓存命中分布。
    • /api/metrics/queue:Worker 任务堆积详情。
  • 多库管理:详见 数据库维护指南

🤝 参与贡献

我们欢迎任何形式的贡献!

  1. 提出问题:发现 Bug 或有新想法?请提交 Issue
  2. 提交代码:Fork 本仓库 -> 创建特性分支 -> 提交 PR。
  3. 文档完善:发现文档描述不清?欢迎直接通过 PR 修正。

📄 开源协议

本项目采用 MIT License。详情请参阅 LICENSE 文件。


Built with ❤️ for photography lovers.

About

🤖 AI驱动的智能相册 | 双布局模式 | 移动端触摸优化 | Docker一键部署 一个现代化的智能相册管理系统,支持瀑布流/网格双布局切换,集成AI画中密语、双指缩放拖拽、多数据库架构。开箱即用的Docker部署方案。

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors