Giter Club home page Giter Club logo

lorenzovngl / foodexpirationdates Goto Github PK

View Code? Open in Web Editor NEW
121.0 6.0 22.0 13.23 MB

๐Ÿ“ฑ Android app to track food expiration dates ๐Ÿฅฆ๐Ÿฅ›๐ŸŽ. Built with Jetpack Compose ๐Ÿงฉ, MVVM ๐Ÿ› ๏ธ, Room ๐Ÿ—„๏ธ, and Material You ๐ŸŽจ.

Home Page: https://foodexpirationdates.app

License: MIT License

Kotlin 100.00%
android android-room dagger-hilt food jetpack-compose kotlin kotlin-android app mobile-app expiration-date

foodexpirationdates's Introduction

Ciao ๐Ÿ‘‹, I'm Lorenzo ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป

I'm a 29 y/o Andrioid developer from Italy ๐Ÿ‡ฎ๐Ÿ‡น

I'm passionate since childhood about computers and technology and I'm a programmer for work and for passion. I have a master degree in Computer Science obtained at the University of Bologna and I work as a software developer, specialized in Android applications.

I am very curious, in fact there are many things that I am passionate about, but among the ones that do it the most there are astronomy and Eastern cultures.

Recently I have discovered the beautiful world of open source software: I use GitHub a lot looking for interesting projects and developers to collaborate with.

Please visit my personal website to know more about me.

๐Ÿค Connect with me

lorenzovngl_dev lorenzovainigli lorenzovainigli

๐Ÿ’ผ My repositories

Android Apps
Description Main language Last commit Download
Food Expiration Dates GitHub top language GitHub last commit GitHub release (latest by date) Play Store GitHub all releases
Nice Places - Discover the culture around you GitHub top language GitHub last commit GitHub release (latest by date) Play Store GitHub all releases
Domina - The game of checkers GitHub top language GitHub last commit Play Store
Personal projects
Description Main language Last commit Download
Automatic generator of UML diagrams using PlantUML GitHub top language GitHub last commit GitHub release (latest by date) GitHub all releases
Nice Places - Website GitHub top language GitHub last commit
Advanced pagination with Bootstrap GitHub top language GitHub last commit GitHub release (latest by date) GitHub all releases
Lyra - Budget Tracking Web App in React GitHub top language GitHub last commit
My solutions for the Meta Hacker Cup problems GitHub top language GitHub last commit
My solutions for the competitions on Kaggle GitHub top language GitHub last commit
Shinobi - A tool to learn Japanese writing system GitHub top language GitHub last commit
Implementation of the "n-gram" concept of computational linguistics GitHub top language GitHub last commit
University projects
Description Main language Last commit
Mushroom Classification GitHub top language GitHub last commit
Simulation of SARS-CoV-2 outbreak GitHub top language GitHub last commit
Analysis of Yelp Open Dataset GitHub top language GitHub last commit
A mini-blockchain implementation in Erlang GitHub top language GitHub last commit
Open Sailing - A Ship Game in OpenGL GitHub top language GitHub last commit
[๐ŸŽ“ Bachelor's degree thesis project] Denario, an app for budget tracking GitHub top language GitHub last commit
Agent-based football simulation GitHub top language GitHub last commit
Implementation of the Traveling salesman problem in Scala-Spark GitHub top language GitHub last commit
Word Sense Disambiguation in Python GitHub top language GitHub last commit
Java-based compiler for a custom programming language GitHub top language GitHub last commit
Scientific articles web scraping web-app GitHub top language GitHub last commit

๐Ÿ† My achievements

๐Ÿ“Š My statistics

lorenzovngl lorenzovngl

If you like one of my projects, please consider leaving a star to support me. Thank you.

foodexpirationdates's People

Contributors

3limssmile avatar abdulmuizz0903 avatar an-array avatar bhavesh100 avatar dekan avatar dependabot[bot] avatar devedroy avatar kuragehimekurara1 avatar lorenzovngl avatar mikropsoft avatar ngocanhtve avatar rasvanjaya21 avatar rick-ab avatar udev2019 avatar weblate 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  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  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

foodexpirationdates's Issues

Hindi translation needs update

There are several errors in the project due to missing translations in Hindi:

    Error:Error:line (31)"menu" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (32)"settings" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (33)"date_format" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (34)"choose_the_date_format" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (35)"locale_formats" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (36)"other_formats" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)

These values are located in values/strings.xml and their translation must be inserted in values-hi/strings.xml.

CC @devedroy

List of contributors inside the app

It will be good to see the list of contibutor inside the app. I think the best place to insert their names is at the bottom of InfoActivity.

My idea is to create a list like this:

Contributors

Thanks to these awesome people for contibuting to the development of this app.

  • John Doe (@_johndoe)
  • ...

Trackers in the latest release

First thanks for providing your app! Unfortunately, v0.8 added a couple of non-free and tracking libs, making it essentially no longer FOSS:

Offending libs:
---------------
* Crashlytics (/com/crashlytics): NonFreeDep,Tracking
* Google Ads (/com/google/ads): Ads,NonFreeDep
* Firebase Data Transport (/com/google/android/datatransport): NonFreeNet
* Google Mobile Services (/com/google/android/gms): NonFreeDep
* Firebase (/com/google/firebase): NonFreeNet,NonFreeDep
* Firebase Analytics (/com/google/firebase/analytics): NonFreeDep,Tracking
* Firebase Installations (/com/google/firebase/installations): NonFreeNet

7 offenders.

According to the release notes, those where added intentionally. So please let me raise 2 question:

  • would you consider removing them again, or at least replacing them with more privacy-friendly alternatives which are configured to be opt-in? Google isn't exactly known as a "privacy preserving entity", so the above will scare several users away.
  • if not, would you at least consider a foss build flavor coming without those, providing its APK along the others at your releases?

I've removed v0.8 from my repo again and disabled updates until this issue is solved. If it cannot be solved, I'll unfortunately have to remove your app from my repo, which would be a pity โ€“ the idea is great, and the app certainly helpful for many. Thanks in advance!

[Feature] Opening Date

For a lot of products the opening date is also an important information.
It would be great to have the ability to enter an opening date as well as a time span for how long the item is good after opening.
These two fields should be optional. If both fields are filled, the item will be listed according to the opening date + time span in the expirations list. Otherwise the original expiration date will be used for sorting.

Inspiration (Humble Request)

Please take inspiration from "Best Before" app on Play Store please add more features and functions please please please this app is MUST for EVERYONE so please work on that again very much please

@lorenzovngl Thank You โค๏ธ

Add README

Please add readme to the repo so that developers can know what is it about and specifics about the repository

[Feature] Use camera for thumbnails & OCR to get expiration label

Hi, just a simple idea that is probably not so simple to implement:
Use the camera to scan the date of the product via OCR and to make a photo of it to use as a thumbnail.
Make naming optional.ย 

So lazy people, like me, can just use the app via camera:

  1. Make a photo of the date label. App recognize & translates date via OCR.
  2. Make a photo for a thumbnail to recognize the product.
  3. Next product.

Feature Request: Show deleted items

Is your feature request related to a problem? Please describe.
When I delete an item, it's gone. I want to see what I just deleted and when.

Describe the solution you'd like
I wish deleted items get moved to some other place instead, with the date they were deleted. This lets me:

  • Move it back in case of accidental deletion.
  • Keep a history of what I used in the past.

Describe alternatives you've considered
Can't think of an alternative except finding another app if one exists.

Additional context
N/A

Lack of tests

The app needs more tests. At least to cover the main actions perfermed by the user.

Arabic translation needs update

There are several errors in the project due to missing translations in Arabic:

    Error:Error:line (17)"share" is not translated in "ar" (Arabic)
    Error:Error:line (18)"leave_a_star_on_github" is not translated in "ar" (Arabic)
    Error:Error:line (19)"write_a_review" is not translated in "ar" (Arabic)
    Error:Error:line (20)"source_code" is not translated in "ar" (Arabic)
    Error:Error:line (21)"features" is not translated in "ar" (Arabic)
    Error:Error:line (22)"support_this_project" is not translated in "ar" (Arabic)
    Error:Error:line (23)"report_a_bug" is not translated in "ar" (Arabic)
    Error:Error:line (24)"version_x" is not translated in "ar" (Arabic)
    Error:Error:line (25)"app_description" is not translated in "ar" (Arabic)
    Error:Error:line (26)"about_this_app" is not translated in "ar" (Arabic)
    Error:Error:line (27)"privacy_policy" is not translated in "ar" (Arabic)
    Error:Error:line (28)"back" is not translated in "ar" (Arabic)
    Error:Error:line (29)"no_items_found" is not translated in "ar" (Arabic)
    Error:Error:line (30)"please_insert_one" is not translated in "ar" (Arabic)
    Error:Error:line (31)"menu" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (32)"settings" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (33)"date_format" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (34)"choose_the_date_format" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (35)"locale_formats" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (36)"other_formats" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)

These values are located in values/strings.xml and their translation must be inserted in values-ar/strings.xml.

CC @abdulmuizz0903

[Feature]: Export/import data

Description

We need to implement a feature in our Android app that allows users to export and import data from the local database. Currently, our app utilizes Room for managing the local database. This feature will provide users with the ability to back up their data or transfer it between devices seamlessly.

Requirements

  1. Export Functionality:

    • Users should be able to export specific data or the entire database.
    • Exported data should be stored in a format that can be easily transferred or backed up, such as CSV or JSON.
    • The export process should be user-friendly and intuitive.
  2. Import Functionality:

    • Users should be able to import data into the app's local database.
    • Support for importing data from CSV, JSON, or other common formats.
    • The import process should handle data validation and ensure data integrity.
  3. Integration with Room Database:

    • Ensure that exporting and importing functionalities seamlessly integrate with the existing Room database implementation.
    • Maintain compatibility with Room's database schema and data structures.
  4. UI/UX Considerations:

    • Design intuitive user interfaces for initiating export and import operations.
    • Provide feedback to users during the export/import process, such as progress indicators or success/error messages.

Additional Information

  • Our app is built using Kotlin and utilizes the Room persistence library for managing the local database.
  • Consider performance implications, especially for large datasets, during export and import operations.
  • Test thoroughly to ensure the reliability and robustness of the export/import feature across different devices and scenarios.

java.lang.NoSuchMethodError: No static method in v2.0

Description

Version 2.0 is affected by a bug:

Fatal Exception: java.lang.NoSuchMethodError: No static method performImeAction$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V in class Ln1/u; or its super classes (declaration of 'n1.u' appears in /data/app/~~O5S05GftgcRl67TcRjyO2A==/com.lorenzovainigli.foodexpirationdates-DAh1dEwCGimGJSX1GL1m8A==/base.apk)

To Reproduce

Not exactly known yet. A user said that the bug occurs when he tried to insert a food item, so this suggest the problem comes from a textfield in the Insert Screen

Smartphone

The following data are extracted from Crashlitycs data, however only 27 of about 300 active users have faced this bug.

  • Devices: Samsung Galaxy S23, Samsung Galaxy F23 5G, Fairphone 4, Samsung Galaxy S8+, MotoG84 5G, Pixel 7
  • OS: Android 14, 13, 12, 11, 10, 9
  • Version: 2.0

Additional context

Full stacktrace:

Fatal Exception: java.lang.NoSuchMethodError: No static method performImeAction$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V in class Ln1/u; or its super classes (declaration of 'n1.u' appears in /data/app/~~O5S05GftgcRl67TcRjyO2A==/com.lorenzovainigli.foodexpirationdates-DAh1dEwCGimGJSX1GL1m8A==/base.apk)
       at androidx.compose.foundation.text.CoreTextFieldKt$CoreTextField$semanticsModifier$1.invoke(CoreTextField.kt:184)
       at androidx.compose.foundation.text.CoreTextFieldKt$CoreTextField$semanticsModifier$1.invoke(CoreTextField.kt:1)
       at androidx.compose.ui.semantics.CoreSemanticsModifierNode.applySemantics(SemanticsModifier.kt:1)
       at androidx.compose.ui.node.LayoutNode$collapsedSemantics$1.invoke(LayoutNode.java:313)
       at androidx.compose.ui.node.LayoutNode$collapsedSemantics$1.invoke(LayoutNode.java:81)
       at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.java:60)
       at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.b(SnapshotStateObserver.kt:48)
       at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:153)
       at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:1)
       at androidx.compose.ui.node.OwnerSnapshotObserver.observeSemanticsReads$ui_release(OwnerSnapshotObserver.kt:43)
       at androidx.compose.ui.node.LayoutNode.getCollapsedSemantics$ui_release(LayoutNode.kt:43)
       at androidx.compose.ui.semantics.SemanticsNodeKt.SemanticsNode(SemanticsNode.kt:110)
       at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:34)
       at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:42)
       at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:42)
       at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:42)
       at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:42)
       at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:42)
       at androidx.compose.ui.semantics.SemanticsNode.l(SemanticsNode.kt:15)
       at androidx.compose.ui.semantics.SemanticsNode.getChildren(SemanticsNode.kt:27)
       at androidx.compose.ui.semantics.SemanticsNode.getReplacedChildren$ui_release(SemanticsNode.kt:285)
       at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:285)
       at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:302)
       at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:302)
       at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap(AndroidComposeViewAccessibilityDelegateCompat_android.kt:76)
       at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.access$getAllUncoveredSemanticsNodesToMap(AndroidComposeViewAccessibilityDelegateCompat_android.kt:76)
       at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.getCurrentSemanticsNodes(AndroidComposeViewAccessibilityDelegateCompat.android.kt:76)
       at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.sendAccessibilitySemanticsStructureChangeEvents(AndroidComposeViewAccessibilityDelegateCompat.android.kt:27)
       at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.checkForSemanticsChanges(AndroidComposeViewAccessibilityDelegateCompat.java:764)
       at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.semanticsChangeChecker$lambda$46(AndroidComposeViewAccessibilityDelegateCompat.java:764)
       at android.os.Handler.handleCallback(Handler.java:958)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loopOnce(Looper.java:230)
       at android.os.Looper.loop(Looper.java:319)
       at android.app.ActivityThread.main(ActivityThread.java:8893)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)

Interacting with Greyed-out fields

Description
Greyed-out fields like the unchecked Opening Date can still be interacted with.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Lists'
  2. Click on '+'
  3. Click on 'Opening Date' without checking the checkbox
  4. See error

Expected behavior
No registered interactions

Observed Behavior
Interaction is possible
Screenshot_20240416_130342
Screenshot_20240416_130658

Desktop (please complete the following information):

  • OS: Windows 11
  • IDE: Android Studio
  • Version: 2023.2.1 Patch 2

Smartphone (please complete the following information):

  • Device: Pixel 3a
  • OS: Android 14

Additional context
This bug does not affect the item as the opening date is only used when the box is checked

Add French translation

I would like to add French localization to this app.

I appreciate anyone who would like to contribute to my project by adding French translation.

Like every Android app, the strings to translate are located in values/strings.xml. Their translation must be inserted in values-fr/strings.xml.

Add Arabic Language

I raised a PR to add Arabic language. You can merge it after you have checked it.

Spanish translation missing

I would like to add a Spanish translation to this app.

To solve this issue:

  1. comment below requesting the assignment and wait my reply;
  2. fork the project and create a new branch, then checkout to the new branch;
  3. work on the new translation (in alternative you can use the translation editor as described here):
    1. create the folder value-es under app/src/main/res;
    2. create in the new folder the file strings.xml copied from the default strings.xml;
    3. translate each string to Spanish;
  4. commit your changes (please use the convention of gitmoji.dev as other commits in this project);
  5. open a pull request with the main branch of this repo as target.

versionCode 31 introduced several proprietary components to the FOSS build

It looks like a mistake happened with the last release (versionCode 31), which introduced several proprietary compontents:

Offending libs:
---------------
* Firebase Data Transport (/com/google/android/datatransport): NonFreeNet
* Google Mobile Services (/com/google/android/gms): NonFreeComp
* ML Kit (/com/google/mlkit): NonFreeComp,Tracking

So I had to remove that version from IzzyOnDroid again and disable updates until this is resolved. Vague guess: You've added MLKit, and it dragged in the other dependencies? Could you please revert that for the FOSS build? Thanks in advance!

Translation for Tamil

Hello I can contribute translation for my native language Tamil. How can be part of this?

Add info about the project

It's good for the app to have a dialog (or an activity) that shows the current version and brief information about the project with a link to this repo.

Full Date please!

I have entered several Items together with their Expiration-Dates.
The List unfortunately does not show the Year!

Please show the full Date โ€“ preferably in standardized ISO-Date-Format: 2025-12-17

Icon

Add material themed app icon

Spanish translation needs update

There are several errors in the project due to missing translations in Spanish:

    Error:Error:line (31)"menu" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (32)"settings" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (33)"date_format" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (34)"choose_the_date_format" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (35)"locale_formats" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)
    Error:Error:line (36)"other_formats" is not translated in "ar" (Arabic), "hi" (Hindi), "es" (Spanish)

These values are located in values/strings.xml and their translation must be inserted in values-es/strings.xml.

CC @Quadropo

Widget

A widget to check the product expiration date would be useful

Change order of options.

Can you change the order of this Buttons to:

Liste // Einstellungen // รœber diese App
List // Settings // About this App

Screenshot_20240703-124523

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.