{"id":49349350,"url":"https://github.com/1ureka/taggit","last_synced_at":"2026-04-27T09:04:39.576Z","repository":{"id":349616228,"uuid":"1171755985","full_name":"1ureka/taggit","owner":"1ureka","description":"基於 Svelte 5 與 SvelteKit 開發的個人本地圖片管理工具，原生支持雲端同步架構，兼容 OneDrive 等共用目錄","archived":false,"fork":false,"pushed_at":"2026-04-14T05:42:01.000Z","size":1421,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-14T07:31:07.764Z","etag":null,"topics":["svelte","sveltekit","web"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/1ureka.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-03T15:19:16.000Z","updated_at":"2026-04-12T15:55:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/1ureka/taggit","commit_stats":null,"previous_names":["1ureka/taggit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/1ureka/taggit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1ureka%2Ftaggit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1ureka%2Ftaggit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1ureka%2Ftaggit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1ureka%2Ftaggit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/1ureka","download_url":"https://codeload.github.com/1ureka/taggit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1ureka%2Ftaggit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32329494,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["svelte","sveltekit","web"],"created_at":"2026-04-27T09:04:38.166Z","updated_at":"2026-04-27T09:04:39.546Z","avatar_url":"https://github.com/1ureka.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Taggit\n\n個人本地圖片管理工具，為本機圖片集提供標籤、評分、瀏覽與播放功能，在設計之初即導入雲端同步友好的架構，確保與 OneDrive 等共用目錄完美兼容\n\n## 特色\n\n| 特色           | 說明                                                                                              |\n| -------------- | ------------------------------------------------------------------------------------------------- |\n| 標籤 + 評分    | 為每張圖片加上多個標籤與 0–5 星評分，以交集 / 差集、評分比較、多種排序快速找到目標                |\n| 暫存 / 已提交  | 新圖片先進入暫存區，加完標籤與評分後才正式提交，靈感源自 Git                                      |\n| 拋棄式環境     | 程式只是殼，所有資料都在本地；隨時可刪除紀錄檔重置，也可手動在資料夾中增刪圖片                    |\n| 雲端同步友好   | 收藏目錄適合放在 OneDrive、Dropbox 等同步資料夾，運行時只寫入紀錄檔，圖片與檔名從頭到尾不會被更動 |\n| 大量圖片也流暢 | 所有畫面都只渲染看得見的部分，無論是簡單的列表還是複雜的瀑布流布局                                |\n| 圖片播放器     | 不需要生成影片，自製播放器以更快且動態的方式提供進度條拖動、速度調整等操控                        |\n| 模糊佔位圖     | 圖片載入前先以模糊色塊預覽輪廓與色調，畫面不跳動也不留白                                          |\n\n## 頁面導覽\n\n| 頁面         | 路徑        | 功能                                                                       |\n| ------------ | ----------- | -------------------------------------------------------------------------- |\n| **Browse**   | `/`         | 搜尋、篩選、排序，以瀑布流瀏覽已提交圖片；點擊查看詳情                     |\n| **Tagger**   | `/tagger`   | 上傳或預覽暫存圖片、匯入紀錄，加標籤與評分後提交，支援批次操作與永久刪除   |\n| **Editor**   | `/editor`   | 編輯已提交圖片的名稱、標籤與評分，支援批次操作與退回至暫存區               |\n| **Compare**  | `/compare`  | 隨機抽兩張圖片並列比較，`Space` 鍵換下一組                                 |\n| **Player**   | `/player`   | 全螢幕圖片播放器，播放 / 暫停、速度調整、反向播放、進度拖曳                |\n| **Settings** | `/settings` | 設定收藏目錄、全域標籤重新命名、快取管理、資料修復、孤立記錄清理、備份下載 |\n\n## 使用流程\n\n1. **放入圖片**: 在 Tagger 上傳，或直接把檔案丟進收藏目錄的 `images/` 資料夾\n2. **匯入紀錄**: 可在 Tagger 直接匯入符合格式的 JSON，使工作流程能與其他工具或腳本銜接\n3. **整理**: 在 Tagger 為每張圖片加標籤、給評分，然後提交\n4. **瀏覽與使用**: 提交後即可在 Browse 搜尋瀏覽、在 Player 播放、在 Compare 比較\n5. **隨時修改**: 在 Editor 調整標籤與評分或者退回至暫存區重新整理\n\n## 安裝與執行\n\n需要 [Node.js](https://nodejs.org/)（建議最新 LTS 版本）。\n\n```bash\nnpm install           # 安裝依賴\nnpm run build         # 建置\nnode build            # 啟動，之後可隨時使用 Ctrl + C 停止，停止前會自動保存資料\n```\n\n首次啟動後開啟網頁，會自動引導你設定圖片收藏目錄。\n\n## 收藏目錄結構\n\n設定的收藏目錄會自動建立如下結構：\n\n```\n\u003c收藏目錄\u003e/\n├── images/      # 所有圖片（放入即凍結）\n└── db.json      # 紀錄檔（唯一會被程式寫入的檔案）\n```\n\n## API 概覽\n\n| 端點                        | 方法                 | 用途                                          |\n| --------------------------- | -------------------- | --------------------------------------------- |\n| `/api/committed`            | GET / POST           | 查詢已提交圖片（篩選 + 分頁）/ 匯入紀錄       |\n| `/api/committed/[filename]` | GET / PATCH / DELETE | 取得 / 更新 / 取消提交單張圖片                |\n| `/api/staged`               | GET / POST           | 列出暫存檔案 / 上傳圖片                       |\n| `/api/staged/[filename]`    | POST / DELETE        | 提交至資料庫 / 永久刪除                       |\n| `/api/images/[filename]`    | GET                  | 取得圖片（支援 `?size=sm\\|md\\|xl`）           |\n| `/api/tags`                 | GET / POST / DELETE  | 列出所有標籤 / 全域重新命名 / 全域刪除標籤    |\n| `/api/settings/*`           | 多種                 | 備份、快取、metadata 修復、孤立記錄、目錄設定 |\n\n## 進一步了解\n\n本專案在前端架構做了不少與主流框架慣例相反的選擇，不走「一切皆組件」的路線，而是將 HTML 結構與互動邏輯拆成兩個正交的維度。\n\n每個頁面只有一個 `.svelte` 檔案保持完整的 DOM 結構，所有互動邏輯收進獨立的 `.svelte.ts` class。這讓語意標記、無障礙屬性、CSS 能在一處通盤審視，同時互動邏輯沿職責邊界自由拆分，不被組件邊界綁架。\n\n如果你對這套設計的取捨、Svelte 5 runes 的 class-based 用法、進階的 snippet、CSS 選擇器策略（為什麼刻意保持脆弱性而非健壯性）等話題感興趣，請參閱 [docs/frontend/index.md](docs/frontend/index.md)。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1ureka%2Ftaggit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F1ureka%2Ftaggit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1ureka%2Ftaggit/lists"}