c9a2c8a021 | ||
---|---|---|
.github/workflows | ||
.tx | ||
appinfo | ||
e2e | ||
img | ||
l10n | ||
lib | ||
scripts | ||
src | ||
templates | ||
.gitattributes | ||
.gitignore | ||
.l10nignore | ||
.npmignore | ||
.php-cs-fixer.php | ||
CHANGELOG.md | ||
COPYING | ||
Makefile | ||
README.md | ||
babel.config.js | ||
composer.json | ||
exiftest.jpg | ||
package-lock.json | ||
package.json | ||
playwright.config.ts | ||
tsconfig.json | ||
webpack.js |
README.md
Photo Viewer and Manager
Memories is a photo management app for Nextcloud with advanced features including:
- 📸 Timeline: Sort photos and videos by date taken, parsed from Exif data.
- ⏪ Rewind: Jump to any time in the past instantly and relive your memories.
- 🤖 AI Tagging: Group photos by people and objects using AI, powered by the recognize app.
- 🖼️ Folders: Browse your own and shared folders with a similar, efficient timeline.
- 🎦 Slideshow: View photos from your timeline and folders easily.
- 📱 Mobile Support: Works on devices of any shape and size through the web app.
- ✏️ Edit Metadata: Edit Exif dates on photos quickly and easily.
- 📦 Archive: Store photos you don't want to see in your timeline in a separate folder.
- 📷 RAW Support: View RAW photos from your camera with the Camera RAW Previews app.
- ⚡️ Fast: Memories is extremely fast. Period. More details below.
To get an idea of what memories looks and feels like, check out the public demo. Note that the demo is read-only and may be slow since it runs in a low-end free tier VM provided by Oracle Cloud. Photo credits go to Unsplash (for individual credits, refer to each folder).
How to support development
- 🌟 Star this repository: This is the easiest way to support the project and costs nothing.
- 🪲 Report bugs: If you find a bug, please report it on the issue tracker.
- 📝 Contribute: If you want to contribute, please read file / comment on an issue and ask for guidance.
🚀 Installation
- Install the app from the Nextcloud app store.
- Run
php ./occ memories:index
to generate metadata indices for existing photos. - Open the 📷 Memories app in Nextcloud and set the directory containing your photos. Photos from this directory will be displayed in the timeline, including any photos in nested subdirectories.
- Installing the preview generator for pre-generating thumbnails is strongly recommended.
🏗 Development setup
- ☁ Clone this into your
apps
folder of your Nextcloud. - 👩💻 In a terminal, run the command
make dev-setup
to install the dependencies. - 🏗 To build the Typescript, run
make build-js
. Watch changes with:make watch-js
. - ✅ Enable the app through the app management of your Nextcloud.
- 🎉 Partytime!
⚡ Performance
- Once properly configured, Memories is extremely fast, possibly one of the fastest web photo viewers.
- On a server with relatively cheap hardware (
Intel Pentium G6400 / 8GB RAM / SSD
), loading the timeline takes only~400ms
without cache on a laptop (Intel Core i5-1035G1 / Windows 11 / Chrome
) for a library of~17000 photos
totaling100GB
. The test was performed on Nextcloud 24 withnginx
,php-fpm
andmariadb
running in Docker. - For best performance, install the preview generator and make sure HTTP/2 is enabled for your Nextcloud instance.
📝 Notes
- You may need to configure the Nextcloud preview generator and Imagemagick / ffmpeg to support all types of images and videos (e.g. HEIC). If using the official docker image, add
OC\Preview\HEIC
toenabledPreviewProviders
in yourconfig.php
. - If local time is not found in the photo (especially for videos), the server timezone is used.
- All photos in the timeline must be on a single storage. For example, you cannot have a mounted directory inside your photos directory.
- The app can work with external storage for photos. Just set the mountpoint as the timeline directory.
- If you add any photos from outside Nextcloud, you must run the scan and index commands.
- Indexing may be slow, since all files must be downloaded from the storage. The app currently assumes that the Exif data is present with the first 20MB of each file.
- The archive feature moves photos to a separate folder called
.archive
at the root of your timeline. You can use this, for example, to move these photos to a cold storage.
Special Thanks
Nextcloud team. A lot of this work is based on Photos.