7c1dae918d
* initial commit for XMP sidecar support * Added support for 'missing' metadata files to include those without sidecar files, now detects sidecar files in the filesystem for media already ingested but the sidecar was created afterwards * didn't mean to commit default log level during testing * new sidecar logic for video metadata as well * Added xml mimetype for sidecars only * don't need capture group for this regex * wrong default value reverted * simplified the move here - keep it in the same try catch since the outcome is to move the media back anyway * simplified setter logic Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * simplified logic per suggestions * sidecar is now its own queue with a discover and sync, updated UI for the new job queueing * queue a sidecar job for every asset based on discovery or sync, though the logic is almost identical aside from linking the sidecar * now queue sidecar jobs for each assset, though logic is mostly the same between discovery and sync * simplified logic of filename extraction and asset instantiation * not sure how that got deleted.. * updated code per suggestions and comments in the PR * stat was not being used, removed the variable set * better type checking, using in-scope variables for exif getter instead of passing in every time * removed commented out test * ran and resolved all lints, formats, checks, and tests * resolved suggested change in PR * made getExifProperty more dynamic with multiple possible args for fallbacks, fixed typo, used generic in function for better type checking * better error handling and moving files back to positions on move or save failure * regenerated api * format fixes * Added XMP documentation * documentation typo * Merged in main * missed merge conflict * more changes due to a merge * Resolving conflicts * added icon for sidecar jobs --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com> |
||
---|---|---|
.github | ||
.vscode | ||
design | ||
docker | ||
docs | ||
fastlane | ||
machine-learning | ||
misc/release | ||
mobile | ||
nginx | ||
server | ||
web | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
CODE_OF_CONDUCT.md | ||
install.sh | ||
LICENSE | ||
localizely.yml | ||
Makefile | ||
README_zh_CN.md | ||
README.md | ||
SECURITY.md |
Immich - High performance self-hosted photo and video backup solution
Disclaimer
- ⚠️ The project is under very active development.
- ⚠️ Expect bugs and breaking changes.
- ⚠️ Do not use the app as the only way to store your photos and videos!
Content
- Official Documentation
- Roadmap
- Demo
- Features
- Introduction
- Installation
- Contribution Guidelines
- Support The Project
Documentation
You can find the main documentation, including installation guides, at https://immich.app/.
Demo
You can access the web demo at https://demo.immich.app
For the mobile app, you can use https://demo.immich.app/api
for the Server Endpoint URL
The credential
email: demo@immich.app
password: demo
Spec: Free-tier Oracle VM - Amsterdam - 2.4Ghz quad-core ARM64 CPU, 24GB RAM
Features
Features | Mobile | Web |
---|---|---|
Upload and view videos and photos | Yes | Yes |
Auto backup when the app is opened | Yes | N/A |
Selective album(s) for backup | Yes | N/A |
Download photos and videos to local device | Yes | Yes |
Multi-user support | Yes | Yes |
Album and Shared albums | Yes | Yes |
Scrubbable/draggable scrollbar | Yes | Yes |
Support RAW (HEIC, HEIF, DNG, Apple ProRaw) | Yes | Yes |
Metadata view (EXIF, map) | Yes | Yes |
Search by metadata, objects, faces, and CLIP | Yes | Yes |
Administrative functions (user management) | No | Yes |
Background backup | Yes | N/A |
Virtual scroll | Yes | Yes |
OAuth support | Yes | Yes |
API Keys | N/A | Yes |
LivePhoto backup and playback | iOS | Yes |
User-defined storage structure | Yes | Yes |
Public Sharing | No | Yes |
Archive and Favorites | Yes | Yes |
Global Map | No | Yes |
Partner Sharing | No | Yes |
Facial recognition and clustering | No | Yes |
Support the project
I've committed to this project, and I will not stop. I will keep updating the docs, adding new features, and fixing bugs. But I can't do it alone. So I need your help to give me additional motivation to keep going.
As our hosts in the selfhosted.show - In the episode 'The-organization-must-not-be-name is a Hostile Actor' said, this is a massive undertaking of what the team and I are doing. And I would love to someday be able to do this full-time, and I am asking for your help to make that happen.
If you feel like this is the right cause and the app is something you are seeing yourself using for a long time, please consider supporting the project with the option below.
Donation
- Monthly donation via GitHub Sponsors
- One-time donation via GitHub Sponsors
- Librepay
- buymeacoffee
- Bitcoin: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX