From b39176023ad3b1c6b0a83ab4eaa79a813f1a8e91 Mon Sep 17 00:00:00 2001 From: meichthys <10717998+meichthys@users.noreply.github.com> Date: Sun, 9 Jul 2023 23:27:50 -0400 Subject: [PATCH] Add "Existing Folders" and "Authentication Providers" features --- features.md | 4 ++++ readme.md | 60 +++++++++++++++++++++++++++-------------------------- 2 files changed, 35 insertions(+), 29 deletions(-) diff --git a/features.md b/features.md index b3049c6..8c095cd 100644 --- a/features.md +++ b/features.md @@ -63,6 +63,10 @@ Can photos be geolocated on a map? Does the project have a mechanism to aid the user in re-discovering photos. This can include automatic album generation, 'year in review', etc. +## Existing Folders + +Are existing photo directory structures preserved? + ## Albums Can albums be created and organized? diff --git a/readme.md b/readme.md index 6bb8bc2..0b27b3b 100644 --- a/readme.md +++ b/readme.md @@ -13,35 +13,37 @@ Tip: Hover over icons for missing/incomplete features for more information (link ``` -| Feature | [Damselfly](https://github.com/Webreaper/Damselfly) | [HomeGallery](https://github.com/xemle/home-gallery) | [Immich](https://github.com/alextran1502/immich) | [Librephotos](https://github.com/LibrePhotos/librephotos) | [Lychee](https://github.com/LycheeOrg/Lychee) | [Nextcloud Photos](https://github.com/nextcloud/photos/) | [Nextcloud Memories](https://github.com/pulsejet/memories) | [Photonix](https://github.com/photonixapp/photonix) | [Photofield](https://github.com/SmilyOrg/photofield) | [PiGallery2](https://github.com/bpatrik/pigallery2) | [Photoprism](https://github.com/photoprism/photoprism) | [Photoview](https://github.com/photoview/photoview) | [Piwigo](https://github.com/Piwigo/Piwigo) | [Snapcrescent](https://github.com/snapcrescent/snapcrescent) | -| :--------------------------------------------------------------- | :-------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| [Github Stars](features.md#github-stars) | ![?](https://img.shields.io/github/stars/Webreaper/Damselfly?label=%20) | ![?](https://img.shields.io/github/stars/xemle/home-gallery?label=%20) | ![?](https://img.shields.io/github/stars/alextran1502/immich?label=%20) | ![?](https://img.shields.io/github/stars/LibrePhotos/librephotos?label=%20) | ![?](https://img.shields.io/github/stars/LycheeOrg/Lychee?label=%20) | ![?](https://img.shields.io/github/stars/nextcloud/photos?label=%20) | ![?](https://img.shields.io/github/stars/pulsejet/memories?label=%20) | ![?](https://img.shields.io/github/stars/photonixapp/photonix?label=%20) | ![?](https://img.shields.io/github/stars/smilyorg/photofield?label=%20) | ![?](https://img.shields.io/github/stars/bpatrik/pigallery2?label=%20) | ![?](https://img.shields.io/github/stars/photoprism/photoprism?label=%20) | ![?](https://img.shields.io/github/stars/photoview/photoview?label=%20) | ![?](https://img.shields.io/github/stars/Piwigo/Piwigo?label=%20) | ![?](https://img.shields.io/github/stars/snapcrescent/snapcrescent?label=%20) | -| [Active Contributors](features.md#active-contributors) | 1 | 1 | 4 | 2 | 3 | 3 | 1 | 1 | 1 | 1 | 4 | 1 | 3 | 1 | -| [Source Language](features.md#source-language) | C# | JavaScript / TypeScript | Dart / TypeScript | Python | PHP | JavaScript | PHP / Vue | Python | Go / Vue | TypeScript | Go | Typescript / Go | PHP | Java / Typscript / Dart | -| [License](features.md#license) | ![?](https://img.shields.io/github/license/Webreaper/Damselfly?label=%20) | ![?](https://img.shields.io/github/license/xemle/home-gallery?label=%20) | ![?](https://img.shields.io/github/license/alextran1502/immich?label=%20) | ![?](https://img.shields.io/github/license/LibrePhotos/librephotos?label=%20) | ![?](https://img.shields.io/github/license/LycheeOrg/Lychee?label=%20) | ![?](https://img.shields.io/github/license/nextcloud/photos?label=%20) | ![?](https://img.shields.io/github/license/pulsejet/memories?label=%20) | ![?](https://img.shields.io/github/license/photonixapp/photonix?label=%20) | ![?](https://img.shields.io/github/license/smilyorg/photofield?label=%20) | ![?](https://img.shields.io/github/license/bpatrik/pigallery2?label=%20) | ![?](https://img.shields.io/static/v1?label=%20&message=GPL-3.0&color=orange) | ![?](https://img.shields.io/github/license/photoview/photoview?label=%20) | ![?](https://img.shields.io/github/license/Piwigo/Piwigo?label=%20) | ![?](https://img.shields.io/github/license/snapcrescent/snapcrescent?label=%20) | -| [Demo](features.md#demo) | ❌ | [✅](https://demo.home-gallery.org/https://demo.photoprism.app/library/brow)6️⃣ | [✅](https://demo.immich.app/)6️⃣ | [✅](https://demo2.librephotos.com/ "User:demo Pass:demo1234")5️⃣ | [✅](https://lycheeorg.github.io/demo/)4️⃣ | [✅](https://nextcloud.com/instant-trial/)4️⃣ | [✅](https://demo.memories.gallery/apps/memories/)8️⃣ | [✅](https://demo.photonix.org/login)8️⃣ | [✅](https://demo.photofield.dev/)6️⃣ | [✅](https://pigallery2.onrender.com/)8️⃣ | [✅](https://demo.photoprism.app/library/browse)9️⃣ | [✅](https://photos.qpqp.dk/ "User:demo Pass:demo")9️⃣ | [✅](https://piwigo.org/demo)9️⃣ | [✅](https://demo.snapcrescent.app)9️⃣ | -| [Freeness](features.md#freeness) | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | [🚧](https://photoprism.app/get)7️⃣ | ✅🔟 | ✅🔟 | ✅🔟 | -| [Automatic Mobile Upload](features.md#automatic-mobile-upload) | [❌](https://github.com/Webreaper/Damselfly/issues/40) | ❌ | ✅7️⃣ | ❌ | ❌ | ✅7️⃣ | ✅7️⃣ | ❌ | ❌ | ❌ | ✅6️⃣ | [❌](https://github.com/photoview/photoview/issues/129) | ✅7️⃣ | ✅7️⃣ | -| [Web App](features.md#web-app) | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅7️⃣ | ✅9️⃣ | ✅7️⃣ | ✅9️⃣ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅8️⃣ | ✅7️⃣ | -| [Android App](features.md#android-app) | ❌ | ❌ | [✅](https://github.com/alextran1502/immich#step-4-run-mobile-app)8️⃣ | ✅[7️⃣](https://github.com/savvasdalkitsis/uhuruphotos-android) | [❌](https://github.com/LycheeOrg/Lychee/issues/1013) | [✅](https://github.com/nextcloud/android)3️⃣ | [✅](https://github.com/nextcloud/android)3️⃣ | ✅[4️⃣](https://github.com/photonixapp/photonix-mobile) | ❌ | ❌ | [🚧](https://docs.photoprism.app/user-guide/pwa/)4️⃣ | [🚧](https://github.com/photoview/photoview/issues/701)3️⃣ | [✅](https://www.piwigo.org/mobile-applications)7️⃣ | [✅](https://github.com/snapcrescent/snapcrescent/releases)7️⃣ | -| [iOS App](features.md#ios-app) | ❌ | ❌ | [✅](https://github.com/alextran1502/immich#step-4-run-mobile-app)8️⃣ | [🚧](https://github.com/LibrePhotos/librephotos-mobile)3️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1013) | [✅](https://github.com/nextcloud/ios)3️⃣ | [✅](https://github.com/nextcloud/ios)3️⃣ | ✅[4️⃣](https://github.com/photonixapp/photonix-mobile) | ❌ | ❌ | [🚧](https://docs.photoprism.app/user-guide/pwa/)4️⃣ | [✅](https://apps.apple.com/dk/app/photoview-media-gallery/id1578380271)6️⃣ | [✅](https://www.piwigo.org/mobile-applications)7️⃣ | ❌ | -| [Desktop App](features.md#desktop-app) | ✅9️⃣ | ✅8️⃣ | ❌ | ❌ | ❌ | [✅](https://github.com/nextcloud/desktop)2️⃣ | [✅](https://github.com/nextcloud/desktop)2️⃣ | [❌](https://github.com/photonixapp/photonix/issues/61) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| [LivePhotos](features.md#livephotos) | ❌ | ❌ | ✅9️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/287) | ✅[6️⃣](https://github.com/LycheeOrg/Lychee/issues/1283) | [✅️3️⃣](https://github.com/nextcloud/photos/issues/344) | ✅8️⃣ | [❌](https://github.com/photonixapp/photonix/issues/250) | [❌](https://github.com/SmilyOrg/photofield/issues/52) | ❌ | ✅7️⃣ | [❌](https://github.com/photoview/photoview/issues/273) | [❌](https://github.com/Piwigo/Piwigo/issues/1677) | ❌ | -| [Videos](features.md#videos) | [❌](https://github.com/Webreaper/Damselfly/issues/82) | ✅6️⃣ | ✅[7️⃣](https://github.com/immich-app/immich/issues/203) | ✅8️⃣ | ✅6️⃣ | ✅5️⃣ | ✅7️⃣ | [❌](https://github.com/photonixapp/photonix/issues/295) | [✅](https://github.com/SmilyOrg/photofield/issues/27)3️⃣ | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅4️⃣ | ✅7️⃣ | -| [Geolocation/Map](features.md#geolocation/map) | ✅7️⃣ | ✅8️⃣ | ✅4️⃣ | ✅8️⃣ | [✅5️⃣](https://github.com/LycheeOrg/Lychee/issues/1051) | ✅6️⃣ | ✅9️⃣ | ✅9️⃣ | ❌ | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | ✅7️⃣ | ❌ | -| [Discovery](features.md#discovery) | ❌ | ❌ | ✅6️⃣ | ✅7️⃣ | ✅6️⃣ | ✅6️⃣ | ✅7️⃣ | ❌ | ❌ | ❌ | ✅6️⃣ | ❌ | ✅1️⃣ | ❌ | -| [Albums](features.md#albums) | [❌](https://github.com/Webreaper/Damselfly/issues/238) | ❌ | ✅8️⃣ | ✅9️⃣ | ✅8️⃣ | ✅4️⃣ | ✅8️⃣ | ✅5️⃣ | ❌ | ✅6️⃣ | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | ❌ | -| [Slideshow](features.md#slideshow) | ❌ | ❌ | ❌ | ❌ | [❌](https://github.com/LycheeOrg/Lychee/issues/949) | ✅5️⃣ | ✅5️⃣ | [❌](https://github.com/photonixapp/photonix/issues/427) | ✅6️⃣ | ✅7️⃣ | ✅6️⃣ | [❌](https://github.com/photoview/photoview/issues/51) | ✅5️⃣ | ❌ | -| [Timeline](features.md#timeline) | ✅5️⃣ | ✅3️⃣ | ✅8️⃣ | ✅9️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1050) | ✅4️⃣ | ✅9️⃣ | ✅5️⃣ | ✅6️⃣ | ✅5️⃣ | ✅5️⃣ | ✅9️⃣ | ✅3️⃣ | ✅5️⃣ | -| [Sharing](features.md#sharing) | ❌ | ❌ | ✅8️⃣9️ | ✅9️⃣ | ✅9️⃣ | ✅8️⃣ | ✅8️⃣ | ❌ | ❌ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ❌ | -| [Search](features.md#search) | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ✅4️⃣ | ✅4️⃣ | ✅8️⃣ | ✅9️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ✅7️⃣ | ❌ | -| [Duplicate Handling](features.md#duplicate-handling) | [❌](https://github.com/Webreaper/Damselfly/issues/97) | ❌ | ✅6️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/753) | [❌](https://github.com/LycheeOrg/Lychee/issues/1762) | ✅[6️⃣](https://apps.nextcloud.com/apps/mediadc) | ✅[6️⃣](https://apps.nextcloud.com/apps/mediadc) | [❌](https://github.com/photonixapp/photonix/issues/422) | ❌ | ✅5️⃣ | ✅[6️⃣](https://docs.photoprism.app/user-guide/library/duplicates/) | [❌](https://github.com/photoview/photoview/issues/801) | ✅6️⃣ | ✅7️⃣ | -| [User Defined Tags](features.md#photo-tagging) | ✅7️⃣ | ✅7️⃣ | [❌](https://github.com/immich-app/immich/issues/838) | ❌ | ✅5️⃣ | ✅️3️⃣ | ✅️3️⃣ | ✅6️⃣ | ✅6️⃣ | ❌ | ✅5️⃣ | ❌ | ✅7️⃣ | ❌ | -| [Docker Installation](features.md#docker-installation) | ✅8️⃣ | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅7️⃣ | [✅](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one)6️⃣ | [✅](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one)6️⃣ | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅6️⃣ | ✅8️⃣ | [✅](https://hub.docker.com/r/linuxserver/piwigo)7️⃣ | ✅8️⃣ | -| [Object/Face Recognition](features.md#object/face-recognition) | ✅8️⃣ | ✅6️⃣ | ✅6️⃣ | ✅8️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1266) | [✅8️⃣](https://github.com/nextcloud/recognize) | [✅8️⃣](https://github.com/nextcloud/recognize) | ✅8️⃣ | ✅7️⃣ | ✅6️⃣ | ✅9️⃣ | ✅6️⃣ | [✅](https://github.com/Piwigo/Piwigo/issues/1159)5️⃣ | ❌ | -| [Basic Editing](features.md#basic-editing) | ❌ | ❌ | ❌ | ❌ | ❌ | ✅6️⃣ | ✅6️⃣ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| [EXIF Data](features.md#exif-data) | ✅9️⃣ | ❌ | ✅7️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/77) | ✅7️⃣ | [❌](https://github.com/nextcloud/photos/issues/226) | ✅8️⃣ | ✅7️⃣ | [🚧](https://github.com/SmilyOrg/photofield/pull/59https://github.com/LibrePhotos/librephotos-mobil)3️⃣ | ✅7️⃣ | ✅9️⃣ | ✅7️⃣ | ✅6️⃣ | ✅7️⃣ | -| [Multiple User Support](features.md#multiple-user-support) | ✅7️⃣ | ❌ | ✅7️⃣ | ✅8️⃣ | ✅6️⃣ | ✅9️⃣ | ✅9️⃣ | ✅7️⃣ | [❌](https://github.com/SmilyOrg/photofield/issues/28) | ✅7️⃣ | [❌](https://github.com/photoprism/photoprism/issues/98) | ✅6️⃣ | ✅8️⃣ | ❌ | +| Feature | [Damselfly](https://github.com/Webreaper/Damselfly) | [HomeGallery](https://github.com/xemle/home-gallery) | [Immich](https://github.com/alextran1502/immich) | [Librephotos](https://github.com/LibrePhotos/librephotos) | [Lychee](https://github.com/LycheeOrg/Lychee) | [Nextcloud Photos](https://github.com/nextcloud/photos/) | [Nextcloud Memories](https://github.com/pulsejet/memories) | [Photonix](https://github.com/photonixapp/photonix) | [Photofield](https://github.com/SmilyOrg/photofield) | [PiGallery2](https://github.com/bpatrik/pigallery2) | [Photoprism](https://github.com/photoprism/photoprism) | [Photoview](https://github.com/photoview/photoview) | [Piwigo](https://github.com/Piwigo/Piwigo) | [Snapcrescent](https://github.com/snapcrescent/snapcrescent) | +| :----------------------------------------------------------------- | :-------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| [Github Stars](features.md#github-stars) | ![?](https://img.shields.io/github/stars/Webreaper/Damselfly?label=%20) | ![?](https://img.shields.io/github/stars/xemle/home-gallery?label=%20) | ![?](https://img.shields.io/github/stars/alextran1502/immich?label=%20) | ![?](https://img.shields.io/github/stars/LibrePhotos/librephotos?label=%20) | ![?](https://img.shields.io/github/stars/LycheeOrg/Lychee?label=%20) | ![?](https://img.shields.io/github/stars/nextcloud/photos?label=%20) | ![?](https://img.shields.io/github/stars/pulsejet/memories?label=%20) | ![?](https://img.shields.io/github/stars/photonixapp/photonix?label=%20) | ![?](https://img.shields.io/github/stars/smilyorg/photofield?label=%20) | ![?](https://img.shields.io/github/stars/bpatrik/pigallery2?label=%20) | ![?](https://img.shields.io/github/stars/photoprism/photoprism?label=%20) | ![?](https://img.shields.io/github/stars/photoview/photoview?label=%20) | ![?](https://img.shields.io/github/stars/Piwigo/Piwigo?label=%20) | ![?](https://img.shields.io/github/stars/snapcrescent/snapcrescent?label=%20) | +| [Active Contributors](features.md#active-contributors) | 1 | 1 | 4 | 2 | 3 | 3 | 1 | 1 | 1 | 1 | 4 | 1 | 3 | 1 | +| [Source Language](features.md#source-language) | C# | JavaScript / TypeScript | Dart / TypeScript | Python | PHP | JavaScript | PHP / Vue | Python | Go / Vue | TypeScript | Go | Typescript / Go | PHP | Java / Typscript / Dart | +| [License](features.md#license) | ![?](https://img.shields.io/github/license/Webreaper/Damselfly?label=%20) | ![?](https://img.shields.io/github/license/xemle/home-gallery?label=%20) | ![?](https://img.shields.io/github/license/alextran1502/immich?label=%20) | ![?](https://img.shields.io/github/license/LibrePhotos/librephotos?label=%20) | ![?](https://img.shields.io/github/license/LycheeOrg/Lychee?label=%20) | ![?](https://img.shields.io/github/license/nextcloud/photos?label=%20) | ![?](https://img.shields.io/github/license/pulsejet/memories?label=%20) | ![?](https://img.shields.io/github/license/photonixapp/photonix?label=%20) | ![?](https://img.shields.io/github/license/smilyorg/photofield?label=%20) | ![?](https://img.shields.io/github/license/bpatrik/pigallery2?label=%20) | ![?](https://img.shields.io/static/v1?label=%20&message=GPL-3.0&color=orange) | ![?](https://img.shields.io/github/license/photoview/photoview?label=%20) | ![?](https://img.shields.io/github/license/Piwigo/Piwigo?label=%20) | ![?](https://img.shields.io/github/license/snapcrescent/snapcrescent?label=%20) | +| [Demo](features.md#demo) | ❌ | [✅](https://demo.home-gallery.org/https://demo.photoprism.app/library/brow)6️⃣ | [✅](https://demo.immich.app/)6️⃣ | [✅](https://demo2.librephotos.com/ "User:demo Pass:demo1234")5️⃣ | [✅](https://lycheeorg.github.io/demo/)4️⃣ | [✅](https://nextcloud.com/instant-trial/)4️⃣ | [✅](https://demo.memories.gallery/apps/memories/)8️⃣ | [✅](https://demo.photonix.org/login)8️⃣ | [✅](https://demo.photofield.dev/)6️⃣ | [✅](https://pigallery2.onrender.com/)8️⃣ | [✅](https://demo.photoprism.app/library/browse)9️⃣ | [✅](https://photos.qpqp.dk/ "User:demo Pass:demo")9️⃣ | [✅](https://piwigo.org/demo)9️⃣ | [✅](https://demo.snapcrescent.app)9️⃣ | +| [Freeness](features.md#freeness) | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | [🚧](https://photoprism.app/get)7️⃣ | ✅🔟 | ✅🔟 | ✅🔟 | +| [Automatic Mobile Upload](features.md#automatic-mobile-upload) | [❌](https://github.com/Webreaper/Damselfly/issues/40) | ❌ | ✅7️⃣ | ❌ | ❌ | ✅7️⃣ | ✅7️⃣ | ❌ | ❌ | ❌ | ✅6️⃣ | [❌](https://github.com/photoview/photoview/issues/129) | ✅7️⃣ | ✅7️⃣ | +| [Web App](features.md#web-app) | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅7️⃣ | ✅9️⃣ | ✅7️⃣ | ✅9️⃣ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅8️⃣ | ✅7️⃣ | +| [Android App](features.md#android-app) | ❌ | ❌ | [✅](https://github.com/alextran1502/immich#step-4-run-mobile-app)8️⃣ | ✅[7️⃣](https://github.com/savvasdalkitsis/uhuruphotos-android) | [❌](https://github.com/LycheeOrg/Lychee/issues/1013) | [✅](https://github.com/nextcloud/android)3️⃣ | [✅](https://github.com/nextcloud/android)3️⃣ | ✅[4️⃣](https://github.com/photonixapp/photonix-mobile) | ❌ | ❌ | [🚧](https://docs.photoprism.app/user-guide/pwa/)4️⃣ | [🚧](https://github.com/photoview/photoview/issues/701)3️⃣ | [✅](https://www.piwigo.org/mobile-applications)7️⃣ | [✅](https://github.com/snapcrescent/snapcrescent/releases)7️⃣ | +| [iOS App](features.md#ios-app) | ❌ | ❌ | [✅](https://github.com/alextran1502/immich#step-4-run-mobile-app)8️⃣ | [🚧](https://github.com/LibrePhotos/librephotos-mobile)3️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1013) | [✅](https://github.com/nextcloud/ios)3️⃣ | [✅](https://github.com/nextcloud/ios)3️⃣ | ✅[4️⃣](https://github.com/photonixapp/photonix-mobile) | ❌ | ❌ | [🚧](https://docs.photoprism.app/user-guide/pwa/)4️⃣ | [✅](https://apps.apple.com/dk/app/photoview-media-gallery/id1578380271)6️⃣ | [✅](https://www.piwigo.org/mobile-applications)7️⃣ | ❌ | +| [Desktop App](features.md#desktop-app) | ✅9️⃣ | ✅8️⃣ | ❌ | ❌ | ❌ | [✅](https://github.com/nextcloud/desktop)2️⃣ | [✅](https://github.com/nextcloud/desktop)2️⃣ | [❌](https://github.com/photonixapp/photonix/issues/61) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| [LivePhotos](features.md#livephotos) | ❌ | ❌ | ✅9️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/287) | ✅[6️⃣](https://github.com/LycheeOrg/Lychee/issues/1283) | [✅️3️⃣](https://github.com/nextcloud/photos/issues/344) | ✅8️⃣ | [❌](https://github.com/photonixapp/photonix/issues/250) | [❌](https://github.com/SmilyOrg/photofield/issues/52) | ❌ | ✅7️⃣ | [❌](https://github.com/photoview/photoview/issues/273) | [❌](https://github.com/Piwigo/Piwigo/issues/1677) | ❌ | +| [Videos](features.md#videos) | [❌](https://github.com/Webreaper/Damselfly/issues/82) | ✅6️⃣ | ✅[7️⃣](https://github.com/immich-app/immich/issues/203) | ✅8️⃣ | ✅6️⃣ | ✅5️⃣ | ✅7️⃣ | [❌](https://github.com/photonixapp/photonix/issues/295) | [✅](https://github.com/SmilyOrg/photofield/issues/27)3️⃣ | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅4️⃣ | ✅7️⃣ | +| [Geolocation/Map](features.md#geolocation/map) | ✅7️⃣ | ✅8️⃣ | ✅4️⃣ | ✅8️⃣ | [✅5️⃣](https://github.com/LycheeOrg/Lychee/issues/1051) | ✅6️⃣ | ✅9️⃣ | ✅9️⃣ | ❌ | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | ✅7️⃣ | ❌ | +| [Discovery](features.md#discovery) | ❌ | ❌ | ✅6️⃣ | ✅7️⃣ | ✅6️⃣ | ✅6️⃣ | ✅7️⃣ | ❌ | ❌ | ❌ | ✅6️⃣ | ❌ | ✅1️⃣ | ❌ | +| [Existing Folders](features.md#existing-folders) | ✅7️⃣ | ❌ | ✅[4️⃣](https://immich.app/docs/features/read-only-gallery) | ❌ | [❌](https://github.com/LycheeOrg/Lychee/issues/1096) | ✅7️⃣ | ✅9️⃣ | [❌](https://github.com/photonixapp/photonix/issues/411) | ✅[4️⃣](https://github.com/SmilyOrg/photofield/issues/45) | ✅5️⃣ | ✅9️⃣ | ❌ | [✅](https://github.com/Piwigo/Piwigo/issues/960)7️⃣ | ❌ | +| [Albums](features.md#albums) | [❌](https://github.com/Webreaper/Damselfly/issues/238) | ❌ | ✅8️⃣ | ✅9️⃣ | ✅8️⃣ | ✅4️⃣ | ✅8️⃣ | ✅5️⃣ | ❌ | ✅6️⃣ | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | ❌ | +| [Slideshow](features.md#slideshow) | ❌ | ❌ | ❌ | ❌ | [❌](https://github.com/LycheeOrg/Lychee/issues/949) | ✅5️⃣ | ✅5️⃣ | [❌](https://github.com/photonixapp/photonix/issues/427) | ✅6️⃣ | ✅7️⃣ | ✅6️⃣ | [❌](https://github.com/photoview/photoview/issues/51) | ✅5️⃣ | ❌ | +| [Timeline](features.md#timeline) | ✅5️⃣ | ✅3️⃣ | ✅8️⃣ | ✅9️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1050) | ✅4️⃣ | ✅9️⃣ | ✅5️⃣ | ✅6️⃣ | ✅5️⃣ | ✅5️⃣ | ✅9️⃣ | ✅3️⃣ | ✅5️⃣ | +| [Sharing](features.md#sharing) | ❌ | ❌ | ✅8️⃣ | ✅9️⃣ | ✅9️⃣ | ✅8️⃣ | ✅8️⃣ | ❌ | ❌ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ❌ | +| [Search](features.md#search) | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ✅4️⃣ | ✅4️⃣ | ✅8️⃣ | ✅9️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ✅7️⃣ | ❌ | +| [Duplicate Handling](features.md#duplicate-handling) | [❌](https://github.com/Webreaper/Damselfly/issues/97) | ❌ | ✅6️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/753) | [❌](https://github.com/LycheeOrg/Lychee/issues/1762) | ✅[6️⃣](https://apps.nextcloud.com/apps/mediadc) | ✅[6️⃣](https://apps.nextcloud.com/apps/mediadc) | [❌](https://github.com/photonixapp/photonix/issues/422) | ❌ | ✅5️⃣ | ✅[6️⃣](https://docs.photoprism.app/user-guide/library/duplicates/) | [❌](https://github.com/photoview/photoview/issues/801) | ✅6️⃣ | ✅7️⃣ | +| [User Defined Tags](features.md#photo-tagging) | ✅7️⃣ | ✅7️⃣ | [❌](https://github.com/immich-app/immich/issues/838) | ❌ | ✅5️⃣ | ✅️3️⃣ | ✅️3️⃣ | ✅6️⃣ | ✅6️⃣ | ❌ | ✅5️⃣ | ❌ | ✅7️⃣ | ❌ | +| [Docker Installation](features.md#docker-installation) | ✅8️⃣ | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅7️⃣ | [✅](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one)6️⃣ | [✅](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one)6️⃣ | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅6️⃣ | ✅8️⃣ | [✅](https://hub.docker.com/r/linuxserver/piwigo)7️⃣ | ✅8️⃣ | +| [Object/Face Recognition](features.md#object/face-recognition) | ✅8️⃣ | ✅6️⃣ | ✅6️⃣ | ✅8️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1266) | [✅8️⃣](https://github.com/nextcloud/recognize) | [✅8️⃣](https://github.com/nextcloud/recognize) | ✅8️⃣ | ✅7️⃣ | ✅6️⃣ | ✅9️⃣ | ✅6️⃣ | [✅](https://github.com/Piwigo/Piwigo/issues/1159)5️⃣ | ❌ | +| [Basic Editing](features.md#basic-editing) | ❌ | ❌ | ❌ | ❌ | ❌ | ✅6️⃣ | ✅6️⃣ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| [EXIF Data](features.md#exif-data) | ✅9️⃣ | ❌ | ✅7️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/77) | ✅7️⃣ | [❌](https://github.com/nextcloud/photos/issues/226) | ✅8️⃣ | ✅7️⃣ | [🚧](https://github.com/SmilyOrg/photofield/pull/59https://github.com/LibrePhotos/librephotos-mobil)3️⃣ | ✅7️⃣ | ✅9️⃣ | ✅7️⃣ | ✅6️⃣ | ✅7️⃣ | +| [Multiple User Support](features.md#multiple-user-support) | ✅7️⃣ | ❌ | ✅7️⃣ | ✅8️⃣ | ✅6️⃣ | ✅9️⃣ | ✅9️⃣ | ✅7️⃣ | [❌](https://github.com/SmilyOrg/photofield/issues/28) | ✅7️⃣ | [❌](https://github.com/photoprism/photoprism/issues/98) | ✅6️⃣ | ✅8️⃣ | ❌ | +| [Authentication Providers](features.md#authentication-providers) | ❌ | ❌ | ✅7️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/616) | [❌](https://github.com/LycheeOrg/Lychee/issues/1844) | ✅9️⃣ | ✅9️⃣ | [❌](https://github.com/photonixapp/photonix/issues/432) | ❌ | [❌](https://github.com/bpatrik/pigallery2/issues/389) | [🚧](https://github.com/photoprism/photoprism/issues/782) | [❌](https://github.com/photoview/photoview/issues/624) | ✅5️⃣ | ❌ | **Note:** This list is by no means comprehensive. For links to other photo library projects, see the [Awesome Self-Hosted](https://github.com/awesome-selfhosted/awesome-selfhosted#photo-and-video-galleries) list and the [Awesome Privacy](https://github.com/pluja/awesome-privacy#photo-storage) list.