Fast, modern and advanced photo management suite. Runs as a Nextcloud app.
  • PHP 29%
  • Vue 26.5%
  • TypeScript 20.8%
  • Kotlin 9.3%
  • Go 7.4%
  • Other 6.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Nextcloud bot 77a5693690
fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-10-15 03:44:38 +00:00
.agents/skills chore(skills): move release, testing and github flows out of AGENTS.md 2026-10-11 22:51:07 -07:00
.devcontainer dev: clarify app asset cache 2024-10-11 08:30:05 -07:00
.examples/Docker feat(vod): report describe latency in health check and admin UI 2026-09-25 03:48:13 -07:00
.github feat(scripts): verify JS manifest after build 2026-10-07 19:22:14 -07:00
.tx [tx-robot] Update transifex configuration 2022-10-01 03:18:37 +00:00
.vscode chore(lens): move lint from pylint and flake8 to ruff 2026-09-23 22:57:51 -07:00
android refactor(android): use toUri and ignore unused exception 2026-10-13 10:47:36 -07:00
appinfo chore(release): bump version to 10.1.0 2026-10-14 11:04:55 -07:00
docs feat(admin): warn when PHP-FPM max_children limit is hit 2026-10-13 10:47:37 -07:00
e2e fix(e2e): disable route transitions under automation and tag placeholder clusters 2026-10-11 10:57:09 -07:00
go-vod chore(go-vod): bump version to 0.6.3 2026-10-14 10:55:19 -07:00
img img: remove outline and combine paths 2024-02-03 19:52:35 +01:00
l10n fix(l10n): Update translations from Transifex 2026-10-15 03:44:38 +00:00
lens fix(lens): isolate places retries and close deletion races 2026-10-05 11:12:16 -07:00
lib chore(go-vod): bump GOVOD_VER to 0.6.3 2026-10-14 10:57:04 -07:00
metadata Update short_description.txt 2024-01-21 19:43:22 +00:00
patches fix(css): backport dialogs toast nav-closed fix, drop body:has override 2026-10-09 20:50:53 -07:00
scripts feat(manifest): switch JS manifest to TUF targets with DSSE envelope 2026-10-08 09:51:59 -07:00
src fix(timeline): skip skeleton when restored route state is empty 2026-10-13 23:48:53 -07:00
stubs CS Fixer and Psalm corrections: 2026-04-06 09:55:28 -07:00
templates fix(public): expose share token for chunked public uploads 2026-09-08 12:03:12 -07:00
tests test(exif): add equirectangular pano extraction test 2026-10-05 15:25:19 -07:00
.gitattributes Ensure consistent .sh line endings 2025-04-03 19:53:24 +02:00
.gitignore git: ignore plans 2026-09-23 22:57:37 -07:00
.l10nignore l10n: ignore docs 2023-04-30 13:31:49 -07:00
.npmignore Add vue 2022-08-14 20:54:18 +00:00
.php-cs-fixer.php chore(lint): modernize php-cs-fixer config for PHP 8.2 2026-09-11 09:54:04 -07:00
.prettierrc chore: update dependencies (close #1399) 2025-02-26 12:17:54 -08:00
AGENTS.md chore(skills): move release, testing and github flows out of AGENTS.md 2026-10-11 22:51:07 -07:00
CHANGELOG.md chore(release): bump version to 10.1.0 2026-10-14 11:04:55 -07:00
composer.json test: add unit test scaffold 2026-08-30 20:41:49 -07:00
composer.lock chore(deps): update composer dev dependencies 2026-10-05 11:12:08 -07:00
COPYING Initial Commit 2022-08-13 01:58:37 +00:00
exiftest.jpg Test for exiftool before running (fix #6) 2022-08-20 02:25:39 +00:00
GEMINI.md agents: add initial context 2026-08-30 21:26:38 -07:00
Makefile ci: fix php init 2026-09-04 00:44:47 -07:00
mkdocs.yml chore(docs): move dynamic_copyright hook into docs/ 2026-10-01 21:32:53 -07:00
package-lock.json ui: preserve dtm state in router state 2026-10-08 13:10:57 -07:00
package.json chore(release): bump version to 10.1.0 2026-10-14 11:04:55 -07:00
phpunit.xml ci: publish unit test results 2026-08-30 20:54:40 -07:00
playwright.config.ts e2e: video 2026-09-03 14:41:34 -07:00
psalm-ls.xml psalm: back to level 3 2026-09-24 11:43:03 -07:00
psalm.xml psalm: back to level 3 2026-09-24 11:43:03 -07:00
README.md readme: add unit test badge 2026-08-30 20:56:18 -07:00
tsconfig.json chore(frontend): drop old Vue mixin references 2026-10-07 00:15:18 -07:00
webpack.config.ts feat(manifest): switch JS manifest to TUF targets with DSSE envelope 2026-10-08 09:51:59 -07:00
webpack.l10n-bundle-plugin.ts fix(build): emit l10n bundle after minification 2026-09-15 15:54:23 -07:00
webpack.manifest-sign-plugin.ts feat(manifest): switch JS manifest to TUF targets with DSSE envelope 2026-10-08 09:51:59 -07:00

Screenshot

Memories: Photo Management for Nextcloud

Discord Website Demo Nextcloud Store

GitHub GitHub issues GitHub Sponsor

unit test e2e static analysis

Shepherd go-vod

Memories is a batteries-included photo management solution for Nextcloud with advanced features

🎁 Features

  • 📸 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, powered by recognize and facerecognition.
  • 🖼️ Albums: Create albums to group photos and videos together. Then share these albums with others.
  • 🫱🏻‍🫲🏻 External Sharing: Share photos and videos with people outside of your Nextcloud instance.
  • 📱 Mobile Support: Work from any device, of any shape and size through the web app.
  • ✏️ Edit Metadata: Edit dates and other metadata on photos quickly and in bulk.
  • 📦 Archive: Store photos you don't want to see in your timeline in a separate folder.
  • 📹 Video Transcoding: Transcode videos and use HLS for maximal performance.
  • 🗺️ Map: View your photos on a map, tagged with accurate reverse geocoding.
  • 📦 Migration: Migrate easily from Nextcloud Photos and Google Takeout.
  • ⚡️ Performance: Do all this very fast. Tested on instances with over a million photos.

🚀 Installation

  1. Install the app from the Nextcloud app store.
  2. Perform the recommended configuration steps.
  3. Run php occ memories:index to generate metadata indices for existing photos.
  4. Open the 📷 Memories app in Nextcloud and set the directory containing your photos.

📱 Mobile Apps

🏗 Development Setup

You can use the dev container to quickly fire up an instance of Nextcloud with Memories pre-installed. See .devcontainer/README.md for more information.

Open in GitHub Codespaces

To set up a development instance manually, follow these steps:

  1. ☁ Clone this monorepo into the custom_apps folder of your Nextcloud.
  2. 📥 Install Composer and Node.js 18
  3. 👩‍💻 In a terminal, run the command make dev-setup to install the dependencies.
  4. 🏗 To build/watch the UI, run make watch-js.
  5. ✅ Enable the app through the app management of your Nextcloud.
  6. ⚒️ (Strongly recommended) use VS Code for development and install these extensions (Ctrl+Shift+P > Show Recommended Extensions).
    • PHP Intelephense: For PHP intellisense and static analysis
    • PHP-CS-Fixer: For PHP formatting (alternatively, make php-cs-fixer)
    • Psalm: For PHP static analysis (alternatively, make psalm)
    • Prettier: For autoformatting Vue and Typescript
    • Volar: For Vue intellisense and static analysis
  7. If using PHP Intelephense, search for @builtin php-language-features in the extensions tab and disable it.

This monorepo is organized into the following packages:

  • lib: Backend and database migrations (PHP).
  • src: Frontend for all platforms (Vue)
  • go-vod: On-demand video transcoder (Go)
  • android: Android implemention of NativeX (Kotlin)
  • l10n: Translations (Transifex)

Releases are organized with these tags:

  • v*: overall releases (e.g. v1.0.0 or v1.0.0-beta.1)
  • go-vod/*: transcoder releases (e.g. go-vod/1.0.0)
  • android/*: Android releases (e.g. android/1.0.0)

🤝 Support the project

  1. 🌟 Star this repository: This is the easiest way to support Memories and costs nothing.
  2. 🪲 Report bugs: Report any bugs you find on the issue tracker.
  3. 📖 Translate: Help translate Memories into your language on Transifex.
  4. 📝 Contribute: Read and file or comment on an issue and ask for guidance.
  5. 🪙 Sponsorship: You can support the project financially at GitHub Sponsors.

A shout out to the current and past financial backers of Memories! See the sponsors page for a full list.

📝 Changelog

For the full changelog, see CHANGELOG.md.

🙏 Special Thanks

To the great folks building Nextcloud, PHP, Vue and all the other dependencies that make this project possible.

Thanks to GitHub, CircleCI and BrowserStack for sponsorship for Open Source projects for CI / testing on different devices.

📄 License

Memories is licensed under the AGPLv3. Subpackages such as go-vod are licensed under their respective licenses. See the directory of the subpackage for more information.