An unofficial, native Ubuntu Touch (Lomiri) application to connect, browse, back up and manage your photos and videos on an Immich server.
Disclaimer: This application has no affiliation or connection with FUTO or the Immich project. "Immich" is a trademark of FUTO. This software is provided "as is" without any warranties, is used at your own risk, and we accept no responsibility or liability.
- Direct Connection — the app talks only to your own Immich server; no intermediate servers, your data stays between your device and your server
- Timeline & Gallery — high-performance photo/video timeline grouped by year/month/day with lazy loading, date fast-scroll and adjustable grid zoom
- Photo & Video Viewer — fullscreen viewer with pinch-to-zoom, pan, swipe navigation, an EXIF metadata panel (resolution, camera, GPS) and video playback
- Backup Engine — background upload of local photos and videos: SHA1 deduplication, progress with speed and ETA, upload queue with pause/resume, and a "Free Up Space" cleanup of already-backed-up files
- Albums & Library — create, rename and delete albums, add and remove photos, favorites, archive and trash
- People, Places & Search — browse by recognized faces and geolocation, smart text search (CLIP-based when enabled on the server)
- Sharing — create password-protected, expiring shared links and manage shared albums
- Convergence Ready — the layout adapts from phones to tablets and desktop displays
- Privacy — credentials and session tokens are stored only in the app's local database and never leave the device
The app is an unofficial, community-made client for the open-source Immich self-hosted photo and video backup platform, rebuilt natively for Ubuntu Touch. The UI/UX follows the official Immich mobile app, while the entire networking stack is implemented against the public Immich REST API.
This project is a unique showcase of modern software engineering utilizing Artificial Intelligence as a core development driver:
- AI-Driven Engineering — the application was built heavily through the use of AI tools and models to generate QML UI components, Qt bindings, and API logic.
- Visual Modeling & Prompting — the interface and business logic were recreated purely by visually observing the official Immich mobile application and precisely describing those behaviors and visual aspects via text prompts to the AI.
- No Reverse Engineering — we did not use decompilation, code scanning, cracking, or any other reverse-engineering techniques against the official Immich application.
- Public Open Sources — all Immich API endpoints utilized in this project are part of the publicly documented Immich REST API (https://immich.app/docs/api) and were verified using standard diagnostic tools against our own Immich servers.
- Human Review & Testing — the AI-generated code underwent strict code reviews and was rigorously tested by live human developers on physical devices — specifically the Google Pixel 3a and Google Pixel 3a XL running the latest version of Ubuntu Touch (Focal).
Tech stack:
- Qt 5.12 / QtQuick 2.9 with the Ubuntu UI Toolkit (
Ubuntu.Components 1.3) - C++11 backend — asynchronous image provider, multi-threaded backup engine and a local HTTP media proxy for video playback
- QtQuick.LocalStorage (SQLite) for local settings, credentials and the backup sync journal
- CMake + Clickable build system, AppArmor-confined click package
Architecture:
qml/Main.qml— entry point: session state, global viewer and upload queue, global dialogs/overlays, error handlingqml/pages/— screens: login, timeline, photo viewer, albums, library, people, places, search, sharing, uploads, backup settings, aboutqml/components/— reusable UI: custom header and bottom navigation (matching the original app), photo grid, timeline, dialogs, bottom sheetsqml/js/ImmichApi.js— REST client for the Immich API (/api/auth,/api/timeline,/api/albums,/api/assets,/api/search, ...)qml/js/Storage.js— SQLite wrapper for credentials, settings and the backup sync journalsrc/BackupEngine— C++ background backup: device media scan, parallel SHA1 hashing, multipart uploads, local HTTP media proxy for Media Hub and MP4 dimension parsingsrc/ImmichImageProvider— asynchronousimage://immichthumbnails with an in-memory LRU cache and EXIF auto-rotation
# requires clickable (https://clickable-ut.dev)
git clone https://github.com/puqcloud/Photos-for-Immich
cd Photos-for-Immich
clickableMulti-architecture release packages:
clickable build --arch arm64
clickable build --arch armhf
clickable build --arch amd64- PUQ Software — Ruslan Polovyi
- Email: ruslan@polovyi.com
- Website: https://polovyi.com/
- Donate: Support via PayPal
MIT © 2026 PUQ Software (Ruslan Polovyi)





