A LibrePhotos android client written using Jetpack Compose and all the latest Android technologies

Overview

Quality Gate Status Translation status

logo UhuruPhotos. A LibrePhotos client

UhuruPhotos is an Android client for LibrePhotos written using the latest Android technologies, like Jetpack Compose, SQLDelight, Coroutines etc using an MVI architecture.

It borrows a lot of ideas from Google Photos and aims to become a full featured photo album replacement, including features like offline support, backup and sync etc.

|screen 1|screen 2|screen 3|screen 4|

While still early days, it already has a lot of features:

  • Photo feed with multiple views which can be changed by pinch to zoom gestures
  • Multiple select in feed to share/delete multiple items at once
  • Periodic background synchronization with LibrePhotos server
  • Photo details view with information like date, location, gps map, people view, sharing, adding/removing from favourites (synced with LibrePhotos server)
  • Video details view with all the above features and video playback
  • Search your photos using LibrePhotos' search engine. Get search suggestions based on your photos.
  • People view and suggestions for people with most photos.
  • Photo map. See a heatmap of your photos. Navigate around the globe with the interactive map and see photos taken in the location currently viewed.
  • Dark/Light mode (manual and auto)
  • Tablet support
  • A lot of settings to help you control the app storage and memory requirements along with how frequently to perform synchronization with the LibrePhotos server.

As mentioned above, a lot of features will soon be implemented before the full public release, mainly:

  • Local photo support. This will make UhuruPhotos a viable Google Photos alternative which can be used as your primary camera roll viewer.
  • Backup/Sync local images with LibrePhotos server. Take control of your data by never having to worry about photo backups.
  • Album support. Currently the app only shows the full photo feed. Soon, user created albums will be supported as well.
  • Basic photo editing capabilities.
  • Foldables support.
  • ...and more

Play Store

The app is currently in closed beta on the Google Play store. Contact me on twitter for access.

Contributions

  • Translation: UhuruPhotos uses Weblate for its translations. Feel free to contribute or view existing translations at weblate

Translation status

Comments
  • New Server, No Images

    New Server, No Images

    My RAID died, lost my original VM for images. I created a new CentOS with Docker to create a new LibrePhotos library. LibrePhotos connects to an SMB share hosting my images.

    When I try to connect to the new server, I receive the error "There are no images to display". I have uninstalled and reinstalled Uhuru Photos. I have also cleared the cache for the app. I verified that the photos are available on another app, as well as from a web browser.

    Has anyone experienced something similar?

    opened by ubghacking 8
  • Allow full image resolution (feature request)

    Allow full image resolution (feature request)

    For now the only option to get a photo in full resolution is to share it with an app that you can download it. It would make sense if there would be a way to get the full resolution e.g. when zooming it or a way maybe to download it directly?

    opened by ippocratis 5
  • Fail2ban regex trigger

    Fail2ban regex trigger

    I am exposing my librephotos instance bethind a reverse proxy using caddy webserver I'm creating log files for it and monitor the logs with fail2ban

    I use a regex filter

    failregex = ^<HOST>.*"(GET|POST).*" (404|444|403|400) .*$ ignoreregex =

    And set the thresold to 3 failed attempts

    Looks like simply opening photos in uhuruphotos triggers the reggex filter and bans my IP so I cant use the app anymore until I unban it

    Any ideas about how I would come over this apreciated

    I know not directly related to the app so you could close this issue if you think its completely irrelevant

    Thanks

    opened by ippocratis 3
  • UI unresponsiveness in feed

    UI unresponsiveness in feed

    If you open a photo from feed and start to navigate swiping left and right for next and previous photo/video UI gets unresponsive , freeze and app may crash logcat_06-07-2022_17-48-00.txt The entries from 7/6 shows the issue An anr with Input dispach timed out And high CPU load with minor and major faults Also DeadObjectException

    Idk if any of it makes sense

    Note that this happens only if the assert is opened from feed Opening from search (map,face,tag,sugestiong) and navigation there is responsive Log taken with logcatreader app The Apps log was 1,5GB at the time .I cleared log replicated it but still size is ~700mb btw is this size normal? ll.zip Full log .it's 7z compresed but changed the extention to zip so that GitHub accepts it Thanks App version 0031

    opened by ippocratis 2
  • Crash

    Crash

    ERROR [JsonUtf8Reader:674 nextString]: com.squareup.moshi.JsonDataException: Expected a string but was BEGIN_OBJECT at path $.people[0]
    	at com.squareup.moshi.JsonUtf8Reader.nextString(JsonUtf8Reader.java:674)
    	at com.squareup.moshi.StandardJsonAdapters$10.fromJson(StandardJsonAdapters.java:250)
    	at com.squareup.moshi.StandardJsonAdapters$10.fromJson(StandardJsonAdapters.java:247)
    	at com.squareup.moshi.internal.NullSafeJsonAdapter.fromJson(NullSafeJsonAdapter.java:41)
    	at com.squareup.moshi.CollectionJsonAdapter.fromJson(CollectionJsonAdapter.java:81)
    	at com.squareup.moshi.CollectionJsonAdapter$2.fromJson(CollectionJsonAdapter.java:55)
    	at com.squareup.moshi.internal.NullSafeJsonAdapter.fromJson(NullSafeJsonAdapter.java:41)
    	at com.savvasdalkitsis.uhuruphotos.photos.service.model.PhotoResultJsonAdapter.fromJson(PhotoResultJsonAdapter.kt:93)
    	at com.savvasdalkitsis.uhuruphotos.photos.service.model.PhotoResultJsonAdapter.fromJson(PhotoResultJsonAdapter.kt:24)
    	at com.squareup.moshi.internal.NullSafeJsonAdapter.fromJson(NullSafeJsonAdapter.java:41)
    	at retrofit2.converter.moshi.MoshiResponseBodyConverter.convert(MoshiResponseBodyConverter.java:46)
    	at retrofit2.converter.moshi.MoshiResponseBodyConverter.convert(MoshiResponseBodyConverter.java:27)
    	at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:243)
    
    bug 
    opened by savvasdalkitsis 2
  • Make scrollbar only react to touches on knob

    Make scrollbar only react to touches on knob

    Currently touching anywhere on the scrollbar gutter will move the scrollbar under your finger, making pressing back on phones with gesture navigation mess up the scroll position.

    bug 
    opened by savvasdalkitsis 1
  • Add

    Add "http://" or "https//" to domain name

    It would be nice, if the "http://" or "https//" could be automatically tried. The app can currently not find a server with just the domain name.

    To replicate, just type the demo server with "demo2.librephotos.com" in.

    opened by derneuere 1
  • Show photos from X years ago

    Show photos from X years ago

    I would like to have shown to me what photos there are in my collection from 1,2,...,X years ago respectively.

    Ideally such that it allows me to click on "2 years ago" and browse the pictures from approximately 2 years ago.

    This could be an optional feature if it would otherwise potentially pollute the UI too much.

    enhancement 
    opened by wiwie 0
  • Animated album covers

    Animated album covers

    I like using video clips as album covers sometimes, it would be nice if the android app could also auto-play those just like the web version instead of showing a play button in the middle

    enhancement 
    opened by Eidenz 0
  • All photos not loading automatically

    All photos not loading automatically

    Some photos only load when I manually refresh the corresponding day. Due to this, I may miss some old photos from the timeline, and of course this is not ideal. Is this expected behaviour or a bug?

    opened by nagarrido 2
  • Browse / Search By Folders & Files

    Browse / Search By Folders & Files

    I'm aware that the LibrePhotos web UI doesn't yet support browsing by path/filename (requested in https://github.com/LibrePhotos/librephotos/issues/129, https://github.com/LibrePhotos/librephotos/issues/271).

    Wondering if such a feature is possible on the mobile app, even without being implemented directly in the web UI?

    I'm looking for a replacement for Synology Photos, but my extensive photo collection is already organized via folder structure. Thus being able to browse & search for photos as they are organized on disk is really what I'm looking for. As I solely plan to access my collection from Android, hoping it might be possible in the mobile app, even without needing to wait for it to be added to LibrePhotos' web UI :)

    Thanks in advance

    opened by metal450 0
  • Properly support array image path in new details response

    Properly support array image path in new details response

    Relating to #150

    New photo details response serves an array instead of one path. Temporary fix was to simply use the first one if present. Need to support them all

    opened by savvasdalkitsis 0
  • Optimize app for autofill?

    Optimize app for autofill?

    When server restarts or periodically user have to fill the librephotoss credentials. Autofill services that I tried (bitwarden and google) cant pic up the input field

    As I read in google's documentation

    "Apps that use standard views work with the autofill framework without requiring special configuration"

    So I dont know what is my case

    However, you can optimize how your app works with the framework.

    Source https://developer.android.com/guide/topics/text/autofill-optimize

    Thanks

    opened by ippocratis 0
Owner
Savvas Dalkitsis
Android geek, TDD nut, International Speaker, Technology Evangelist, ex Shazamer, currently a Principal Software Engineer @asos.
Savvas Dalkitsis
Here you can try out Kotlin Multiplatform and Jetpack Compose with some other cutting-edge technologies.

wire The Wire is a Kotlin Multiplatform sample project, currently supporting Android and Windows. Tools And Technolagies Architecture: MVVM MultiThrea

Ali Rezaiyan 9 Aug 16, 2022
FullMangement - an application that helps you manage your tasks effectively. built with the latest tachs like Compose UI, Jetpack libraries, and MVVM design pattern.

Full Management is an application that helps you manage your tasks effectively. built with the latest tachs like Compose UI, Jetpack libraries and MVVM design pattern.

Amr algnyat 4 Nov 1, 2022
Ecormmerce app built using Android latest UI framework - Compose UI and data coming from Fake Store API

BuyCart ?? Android shopping app built with Jetpack Compose consuming FAKE STORE API I am trying to learn and follow some standard Android architecture

Henry Udorji 4 Aug 5, 2022
An Android imageboard client with the focus on maximum performance, fully written with Jetpack Compose

This project is an experimental playground to try implementing an application entirely with Jetpack Compose without using the old Android UI framework.

Dmitry 31 Dec 30, 2022
A weather app using the latest Android tech

App Builders 2022 - Modern Android Techniques This app is the sample project used for the Modern Android Techniques workshop at App Builders 2022. It

Darryl Bayliss 10 Sep 29, 2022
A simple authentication application using Jetpack compose to illustrate signin and sign up using Mvvm, Kotlin and jetpack compose

Authentication A simple authentication application using Jetpack compose to illustrate signin and sign up using Mvvm, Kotlin and jetpack compose Scree

Felix Kariuki 5 Dec 29, 2022
Jetpack Compose Boids | Flocking Insect 🐜. bird or Fish simulation using Jetpack Compose Desktop 🚀, using Canvas API 🎨

?? ?? ?? Compose flocking Ants(boids) ?? ?? ?? Jetpack compose Boids | Flocking Insect. bird or Fish simulation using Jetpack Compose Desktop ?? , usi

Chetan Gupta 38 Sep 25, 2022
Jetpack-compose-uis - A collection of some UIs using Jetpack Compose. built using Katalog

Jetpack Compose UIs This is a collection of some UIs using Jetpack Compose. It i

Mori Atsushi 3 Dec 15, 2022
FirebaseSignInWithGoogle app it's written in Kotlin and shows a simple solution for implementing Firebase Authentication with Google, using Jetpack Compose on Android.

FirebaseSignInWithGoogle It's an app built with Kotlin that shows how to authenticate users with Firebase using Android Architecture Components and th

Alex 28 Dec 25, 2022
It's a simple app written in Kotlin that shows a simple solution for how to save an image into Firebase Storage, save the URL in Firestore, and read it back using Jetpack Compose.

It's a simple app written in Kotlin that shows a simple solution for how to save an image into Firebase Storage, save the URL in Firestore, and read it back using Jetpack Compose.

Alex 10 Dec 29, 2022
Pokedex Compose is an independent re-write of a demo application by the name of Pokedex, but written in jetpack compose.

Pokedex Compose Pokedex Compose is an independent re-write of a similar project by the name of Pokedex. I am recreating the UI but I am doing it using

Jose Patino 4 May 1, 2022
Jetpack Compose app gets data from REST API using KTOR Client. Clean Architecture, Dependency Injection...

posts-ktor-client Jetpack Compose app gets data from REST API using KTOR Client. Clean Architecture, Dependency Injection... Posts KTOR Client Demo ap

Raheem 12 Dec 12, 2022
A Collection on all Jetpack compose UI elements, Layouts, Widgets and Demo screens to see it's potential

ComposeCookBook Declarative UI A Collection of all Jetpack compose UI elements, Layouts, Widgets and Demo screens to see it's potential. Jetpack Compo

Gurupreet Singh 4.9k Dec 31, 2022
Holi is a lightweight Jetpack Compose library of colors, gradients and cool utility functions for all your palette needs!

Holi A library of colors, gradients and utils built using Jetpack Compose for Android Features A wide collection of colors from different palettes for

Siddhesh Patil 167 Dec 5, 2022
Holi is a lightweight Jetpack Compose library of colors, gradients and cool utility functions for all your palette needs!

Holi is a lightweight Jetpack Compose library of colors, gradients and cool utility functions for all your palette needs!

Sid Patil 167 Dec 5, 2022
A collection of animations, compositions, UIs using Jetpack Compose. You can say Jetpack Compose cookbook or play-ground if you want!

Why Not Compose! A collection of animations, compositions, UIs using Jetpack Compose. You can say Jetpack Compose cookbook or play-ground if you want!

Md. Mahmudul Hasan Shohag 186 Jan 1, 2023
This is a sample app(For beginners - App #2) built using Jetpack Compose. It demonstrates the concept of State Hoisting in Jetpack Compose.

JetBMICalculator This is a sample app(For beginners - App #2) built using Jetpack Compose. It demonstrates the concept of State Hoisting in Jetpack Co

BHAVNA THACKER 3 Dec 31, 2022
Jetpack-Compose-Demo - Instagram Profile UI using Jetpack Compose

Jetpack-Compose-Demo Instagram Profile UI using Jetpack Compose

omar 1 Aug 11, 2022
Icontent - Jetpack Compose component to show all random content sended by Inmersoft guide backend

icontent IContent is a library that allows loading audio visual content generica

Orlando Novas Rodriguez 3 Nov 3, 2022