{"id":48586537,"url":"https://github.com/merlin1de/starrate","last_synced_at":"2026-04-14T23:01:47.899Z","repository":{"id":346977939,"uuid":"1192411226","full_name":"merlin1de/starrate","owner":"merlin1de","description":"StarRate — Photo rating and review Tool for Nextcloud photographers","archived":false,"fork":false,"pushed_at":"2026-04-12T23:20:01.000Z","size":2048,"stargazers_count":1,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-13T00:33:05.924Z","etag":null,"topics":["agpl-3","collaboration","lightroom","nextcloud","nextcloud-app","nextcloud-apps","nextcloud-plugin","photo-management","photo-rating","photography","self-hosted","vue"],"latest_commit_sha":null,"homepage":"https://www.instagram.com/merlin1.de/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/merlin1de.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-26T07:29:33.000Z","updated_at":"2026-04-09T21:22:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/merlin1de/starrate","commit_stats":null,"previous_names":["merlin1de/starrate"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/merlin1de/starrate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merlin1de%2Fstarrate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merlin1de%2Fstarrate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merlin1de%2Fstarrate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merlin1de%2Fstarrate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/merlin1de","download_url":"https://codeload.github.com/merlin1de/starrate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merlin1de%2Fstarrate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31818840,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"ssl_error","status_checked_at":"2026-04-14T18:05:01.765Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["agpl-3","collaboration","lightroom","nextcloud","nextcloud-app","nextcloud-apps","nextcloud-plugin","photo-management","photo-rating","photography","self-hosted","vue"],"created_at":"2026-04-08T18:11:26.710Z","updated_at":"2026-04-14T23:01:47.894Z","avatar_url":"https://github.com/merlin1de.png","language":"PHP","readme":"# StarRate — Lightroom-style Photo Rating for Nextcloud\n\n**Rate, label and curate your photos directly in Nextcloud — with 1–5 stars, color labels, and XMP metadata that Lightroom, digiKam and F-Stop can read.**\n\n[![CI](https://github.com/merlin1de/starrate/actions/workflows/ci.yml/badge.svg)](https://github.com/merlin1de/starrate/actions/workflows/ci.yml)\n[![Nextcloud App Store](https://img.shields.io/badge/Nextcloud%20App%20Store-StarRate-blue?logo=nextcloud)](https://apps.nextcloud.com/apps/starrate)\n[![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-green.svg)](LICENSE)\n[![Nextcloud 29–33](https://img.shields.io/badge/Nextcloud-29–33-0082c9?logo=nextcloud)](https://apps.nextcloud.com/apps/starrate)\n[![PHP 8.1+](https://img.shields.io/badge/PHP-8.1%2B-777BB4?logo=php)](https://php.net)\n\n\u003e **The missing photo rating tool for Nextcloud photographers.**  \n\u003e Stop switching apps. Rate your shots, share a guest link with your client, and open them in Lightroom — the stars are already there.\n\n---\n\n## Why StarRate?\n\nPhotographers using Nextcloud for file storage hit the same two walls:\n\n1. **No way to rate and curate photos inside Nextcloud** — you have to export to Lightroom, rate, re-import, repeat.\n2. **No way to let a client pick favorites** without giving them your full Nextcloud access or sending a Google Drive link.\n\nStarRate solves both — and it keeps your ratings inside the JPEG itself, so every app that reads XMP metadata sees them.\n\n---\n\n## XMP Metadata Compatibility\n\nStarRate writes ratings directly into the **JPEG APP1 segment** (XMP standard). No sidecar files. No re-export needed.\n\n| Application | Reads StarRate ratings |\n|---|---|\n| Adobe Lightroom Classic | ✅ |\n| digiKam | ✅ |\n| F-Stop (Android) | ✅ |\n| Darktable | ✅ |\n\nRate in Nextcloud → open in Lightroom → stars are already there.\n\n---\n\n## Features\n\n| Feature | Description |\n|---|---|\n| ⭐ Star rating | 0–5 stars, hover preview, keyboard shortcuts `0`–`5` |\n| 🎨 Color labels | Red / Yellow / Green / Blue / Purple (keys `6`–`9`) |\n| 🚩 Pick / Reject | Flag images with `P` / `X`, batch support via selection bar |\n| 📝 XMP metadata | Ratings written directly into JPEG (APP1 segment) |\n| 📥 XMP import | `occ starrate:import-xmp` — import existing ratings from Lightroom, digiKam, etc. |\n| 💬 Comments | Per-photo notes in loupe view — owner and guests can comment |\n| 📤 Export | CSV download or clipboard copy of ratings and metadata |\n| 🔍 Filter bar | Combinable filters: stars, color, Pick/Reject, unrated |\n| 🔎 Loupe view | Zoom 25–400 %, pan, pinch-to-zoom, keyboard navigation |\n| 🖱️ Batch rating | `Shift+click` / `Ctrl+click`, `Ctrl+A`, floating selection bar |\n| 🔗 Guest sharing | Public gallery links — clients rate without a Nextcloud account |\n| 🌙 Dark theme | Anthracite UI (`#1a1a2e`) with red accent (`#e94560`) |\n| 🌍 i18n | English and German |\n\n---\n\n## Screenshots\n\n### Grid view with star ratings and color labels\n![Grid view](screenshots/starrate-grid.jpg)\n\n### Loupe view with zoom and keyboard navigation\n![Loupe view](screenshots/starrate-loupe.jpg)\n\n### Guest gallery — rate without a Nextcloud account\n![Guest gallery](screenshots/starrate-guest.jpg)\n\n---\n\n## Guest Sharing — The Client Workflow\n\n1. Open a folder in StarRate → click **Share**\n2. Set permission to **View + Rate** or **View only**\n3. Optionally: add a password, expiry date, and minimum star filter\n4. Copy the link → send to your client or model\n\nGuests can rate images in their browser — **no Nextcloud account required**. The photographer sees all guest ratings in real time. Optionally, enable comments so guests can leave per-photo notes.\n\n---\n\n## Requirements\n\n- Nextcloud 29–33\n- PHP 8.1–8.4\n- Node.js 18+ / npm 9+\n- Composer 2\n\n---\n\n## Installation\n\n### From the Nextcloud App Store *(recommended)*\n\nSearch for **StarRate** in the Apps section of your Nextcloud admin panel and click Install.\n\nOr go directly: [apps.nextcloud.com/apps/starrate](https://apps.nextcloud.com/apps/starrate)\n\n### Manual installation\n\n```bash\ngit clone https://github.com/merlin1de/starrate.git /var/www/nextcloud/custom_apps/starrate\ncd /var/www/nextcloud/custom_apps/starrate\ncomposer install --no-dev\nnpm ci \u0026\u0026 npm run build\nsudo -u www-data /var/www/nextcloud/occ app:enable starrate\n```\n\n---\n\n## Coming Soon: Android App 🤖\n\nA native Android app is in development:\n\n- **Nextcloud SSO** account picker\n- **Guest deep-links** — open `starrate://guest?token=...` links directly in the app\n\n⭐ **Star this repo** to get notified when the Android beta launches.\n\n---\n\n## Development\n\n```bash\nmake install-deps   # Install all dependencies\nmake test           # PHPUnit + Vitest\nmake build          # Production bundle → js/\nmake lint           # PHP_CodeSniffer + ESLint\nmake package        # → dist/starrate.tar.gz\n```\n\n### Run tests\n\n```bash\nmake test          # PHPUnit + Vitest\nmake test-php      # PHPUnit only\nmake test-js       # Vitest only (325 component tests)\nmake test-e2e      # Cypress headless (requires a running Nextcloud instance)\nnpm run e2e:open   # Cypress GUI with browser selection\nmake test-coverage # Reports written to tests/results/\n```\n\nCI runs on every PR: Vitest (325 component tests) + PHPUnit (~260 tests, PHP 8.1 + 8.3)\n\n---\n\n## License\n\n**AGPL-3.0-or-later** — see [LICENSE](LICENSE).\n\nFor commercial licensing (mobile apps, white-label, OEM): **starrate@merlin1.de**\n\n---\n\n## Contributing\n\nPull requests and bug reports are welcome! Before submitting: `make test \u0026\u0026 make build`\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerlin1de%2Fstarrate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmerlin1de%2Fstarrate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerlin1de%2Fstarrate/lists"}