GithubHelp home page GithubHelp logo

abertschi / water-me Goto Github PK

View Code? Open in Web Editor NEW
51.0 3.0 8.0 8.09 MB

Don't forget to water your plants.

License: GNU General Public License v3.0

Kotlin 0.26% Dart 96.80% Shell 2.94%
flutter android plants

water-me's Introduction

Water Me 🪴

A simple, open and privacy friendly plant watering reminder for Android.

Build APK Made with Flutter version

preview

Water me is a mobile application written in Flutter to remind you to water your plants. No ads, no account, no sign-up, no tracking.

Features and Components

  • Add plants with watering frequency, name and picture
  • No remote entity, local-only application
  • Flutter, currently support for Android
  • Camera access
  • Local Notifications
  • Workmanager with periodic task
  • Backup and Restore to json format
  • Provider package for MVC separation

Install

Water Me is available on the F-droid store (Metadata).

Get it on F-Droid

Alternatively, download snapshots from the continuous integration action (requires a Github account, be aware that Github zips the apk on download, so unzip first).

Changelog

See ./CHANGELOG for a list of recent features.

Need Help?

See troubleshooting guide for a list of common questions.

Build

This is a flutter based Android application. Ensure to have Android-Studio and flutter-sdk installed.

flutter pub get
flutter build apk

The entire build process in captured in scripts/build.sh.

Feature and Contribution Ideas

Pull requests are welcome ❤️.

  • A better logo :) #4
  • Enable 'web' target to build a web app for ios/ web (needs a backend for notifications).
  • Integrate firebase/ self hosted backend to enable a group mode to sync plant state within a group of users
  • Add a 'note' field to a plant
  • Show watering history in plant detail screen.
  • Allow assignment of plants into groups, e.g. living room, office

And more ideas.

License

GPL v3

About

Built with <3
by Andrin Bertschi
https://abertschi.ch

water-me's People

Contributors

abertschi avatar katrinleinweber avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

water-me's Issues

automatically navigate user view to main view after tapping `Water Now`

Currently

When tapping Water Now the info watered x days ago is updated. But to move to the next plant, user have to tap back arrow first.

Expected

There is nothing much to do after tapping Water Now for a specific plant entry. It would be convenient to automatically navigate users to main view after that action so that they can continue with the next plant entry.

Bonus points for not using all caps for the Water Now button. There's no need to scream at the user at that point in time :)

Idea: Matrix backend

These ideas from the README nicely map to a log-structured database of plain text events.

  • Self hosted backend to enable a group mode to sync plant state within a group of users (related to #3)
  • Watering history
  • Plant groups

Matrix is a publish-subscribe HTTP API around a database of json events. The reference implementations are the server Synapse and the client Element Web / Element Android (which interprets the events as chat messages).

What about this.

  • Self-host Synapse.
  • Join a room through this app.
  • The app parses chat messages that match a certain regex (ignoring other messages, for robustness and to allow for future features).

Then these features come for free

  • privacy (HTTPS + end-to-end encryption)
  • sharing among users (accounts joining the same chatroom)
  • plant history (all events are persisted, but some public servers delete messages after one year or so)
  • plant photo syncing among users (synapse's media store)
  • access controls (kick/ban; or increase the "write message" power level)
  • already available public servers (matrix.org or another one from the federation)
  • can self-host the server (machines can also federate together)
  • matrix users do not have to self-host or make another account
  • client interoperability with non-Android platforms (just write to the chat room with any client)
  • future: third-party bots, easier IoT integration (matrix has language bindings and SDKs)
  • future: a place for comments (can also be per-plant, by using the matrix threading MSC3440)
  • the growing tools ecosystem around matrix

"Take Picture" button blasts flash at full power

Screenshot_20231228_081345

Issue: "Take Picture" button always blasts flash at full power.

Suggested solutions:

  • always turn flash off (plant photos, subjectively, don't need flash)
  • add a flash toggle
  • use a better, native camera API

version 1.0.8 / F-droid
Galaxy XCover6 Pro
Android 13

Collection of Improvements

Improvement suggestions I got through mail:

  • The photo is too dark, it's fine as a background but at least on the main screen it should be in full color.
  • Need support for more photos. I would love a "profile pic" for each plant that is more for telling them apart, and rotating "status pics" where I can compare to the last few side by side to track health.
  • notifications would be great.
  • would be great to say "this plant uses ferilizer" or "doing antifungal regime right now" and have something like other tabs with those countdowns.
    -some kind of support for plant species entry or selection from predefined list would be nice?
    -support for organizing by location in the home, ordering by name, something, anything. I have close to 25 plants and sometimes it's hard to find the one i need just by scanning a list in order of days left until it's thirsty.

Frequent crashes on Android 7.1

I use version 1.0.5 from F-droid on Android 7.1 on a Samsung phone. I get the OS crash popup almost once a day.

FATAL EXCEPTION: main
Process: ch.abertschi.waterme.water_me, PID: 30723
android.app.RemoteServiceException: Bad notification posted from package ch.abertschi.waterme.water_me: Couldn't create icon: StatusBarIcon(icon=Icon(typ=RESOURCE pkg=ch.abertschi.waterme.water_me id=0x7f090000) visible user=0 )
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1832)
	at android.os.Handler.dispatchMessage(Handler.java:102)
	at android.os.Looper.loop(Looper.java:154)
	at android.app.ActivityThread.main(ActivityThread.java:6816)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)

Suggestion: Compress images instead of storing full quality

I think this issue can be tracked separately from the path/binary-dump issue, as it applies regardless of how the actual image data is stored.

Since the images are a background element, it might make sense to compress them before storing. Using image_compression_flutter, I was able to convert a previously ~2.5MB JPG into a 54KB JPG or 22KB WEBP with quality set to 40%.

Also, even if the images do end up getting used in the foreground sometime in the future, the quality of the compression can be set to >40%, however I personally didn't notice any quality loss.

Plants view

Currently there is only a horizontal view. How about more views, e.g. horizontal.

icon in status bar not showing

Currently

Not quite sure when this started but the app icon in status bar no longer shows for Water Me. All that is visible when a notification pops is a tiny white dot instead of the app icon.

Expected

Show correct app icon for notifications in status bar.

This happened on LinageOS 19.1 and now (after migrating) on PixelOS 13 20221119.

1

Suggestion: remove leading 0 in frequency field

When adding a plant, if I tap on the FREQUENCY field and type 5, I get 05 because the initial 0 is still there. For ease of reading, I think it would be better to have just 5.

There are multiple ways of improving this, of course. For example, you could auto-select the text, so that the entered value overrides the existing value. You could also just auto-format the number to remove any leading zeroes. I'm sure there are other options, too.

[feature request] backup / data export

Would be awesome if there would be an option to safe the database. This would give the option to import it later or to transfer the database onto another device, especially if you have a lot of plants that would be useful (:
Thank you for this create app.

improve notification usability by not issuing them during night time

Notifications are very useful for this app, however when staying up late or laying in bed reading etc I frequently receive notifications to water my plants. I have no interest whatsoever to do that at 3 o'clock in the morning.

Wouldn't it make sense to only issue reminder notifications during daytime?

[feature request] Note with watering info

Hi,

I have a feature request : add a note label to have info of how to water the plant.

I can be a good way to know the way of watering, the amount of water or other info about the plant.

Thanks in advance

Make `screens/plant_show` more compact

Hello & thanks for this neat helper :-)

I'm noticing a small… Large… Size issue on a Fairphone 3+ screen with default font-size configured in /e/ OS: the WATER NOW button is only visible without scrolling when the plant name has 7 letters or less.

Any longer name creates a linebreak, which in combination with the 2-line water every … and watered … lines push the button down. The fontSizes and SizedBox(heights are surprisingly large by default, so even reducing the OS font size provides shifts the display problem by only 1 character.

I know one can swipe on the main screen. However, if one is on the plant's own screen for any reason, it's still a bit strange to have to scroll down for the main action.

Therefore: Could the screen please be compacted a little bit? For example as in my compact-plant-show-screen branch? Please feel free to pull that, if you find it useful.


Alternative ideas:

a) Could the icon on the main screen be turned into a button, so that going into screens/plant_show is only necessary for checking the stats?

b) The water droplet icon could be moved to the same line as the plant name.

c) The WATER NOW button could be moved above all other text on screens/plant_show.

Issues with camera view

When I first went to take a picture, I couldn't find the trigger button. It was only by accident that I discovered it when I dragged my finger up from the bottom to the top. When I did take a picture, I noticed that the top of the picture I took was not visible in the camera view while the button was visible at the bottom. I suspect there's something funny about the vertical dimension of the camera view on my phone (Moto G5 Plus, Android 8.1.0), because I don't think you would make it necessary to scroll to get to the button.

Let me know if there's more information I can provide to help.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.