{"repo":"xhongc/PhotoZen","free":true,"listed":false,"github":"https://github.com/xhongc/PhotoZen","clone":"git clone https://github.com/xhongc/PhotoZen.git","description":"NAS高性能的自托管照片和视频管理解决方案","language":"Vue","stars":59,"topics":["photos","self-hosted","nas","photo-manager"],"license":null,"category":"self-hosted-apps","readme_excerpt":"PhotoZen 记录生活之美，留住珍贵时刻 —— 1Monent Music tag web 作者的 NAS相册管理软件 项目结构 技术栈 后端 - Django 4.2.19（REST API框架） - django-ninja 1.3.0（OpenAPI文档生成） - Pillow 10.3.0（图像处理） - SQLite（开发环境数据库） - python-magic 0.4.27（文件类型校验） 前端 - Vue 3.4.21（组合式API） - TypeScript 5.3.3 - Vite 5.2.0（构建工具） - Tailwind CSS 3.4.3（原子化CSS） - DaisyUI 4.7.2（UI组件库） - Heroicons 2.1.1（图标库） - Axios 1.6.7（HTTP客户端） - vue-router 4.3.0（路由管理） 功能实现 后端API接口 1. 照片管理 - POST /api/photos/upload - 上传照片 - GET /api/photos - 获取照片列表 - GET /api/photos/{photo id} - 获取照片详情 2. 相册管理 - POST /api/albums - 创建相册 - GET /api/albums - 获取相册列表 - POST /api/photos/{photo id}/albums/{album id} - 添加照片到相册 3. 标签管理 - POST /api/tags - 创建标签 - GET /api/tags - 获取标签列表 - POST /api/photos/{photo id}/tags/{tag name} - 为照片添加标签 前端组件 1. PhotoUpload组件 - 支持拖拽上传 - 支持多文件上传 - 实时上传进度显示 - 支持取消上传 2. 样式框架 - 使用Tailwind CSS实现响应式布局 - 使用DaisyUI组件库美化界面 - 自定义组件样式类 开发进度 1. ✅ 后端框架搭建 - 完成数据模型设计（Photo、Album、Tag） - 实现基础API接口 - 照片上传与管理 ✅ POST /api/photos/upload 文件上传接口 ✅ GET /api/photos 分页获取照片列表 ✅ GET /api/photos/{photo id} 照片元数据获取 - 相册创建与管理 ✅ POST /api/albums 相册创建 ✅ GET /api/albums 相册列表查询 - 标签管理 ✅ POST /api/tags 标签创建 ✅ GET /api/tags 标签列表查询 - 配置媒体文件处理（支持JPG/PNG/HEIC格式） - 自动生成三种尺寸缩略图（128px/512px/1024px） 2. ✅ 前端框架搭建 - 集成Vue3 + TypeScript开发环境 - 配置Tailwind CSS + DaisyUI组件库 - 实现功能路由配置 - 首页展示最新照片 (/) - 带分类筛选的照片墙 (/photos) - 支持拖拽的文件上传页 (/upload) - 关于页面包含技术栈说明 (/about) 3. ✅ 已完成功能 - 照片上传组件 ✅ 拖拽上传/文件选择器双模式 ✅ 多文件并发上传（最大10个） ✅ 实时进度条显示（基于axios拦截器） ✅ 上传成功自动刷新照片列表 - 照片网格展示组件 ✅ 响应式布局（2-4列自适应） ✅ 懒加载图片（Intersect","default_branch":null,"files":null,"tree":[],"storefront":"/r/xhongc","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/xhongc/PhotoZen/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}