{"id":21342759,"url":"https://github.com/alex-lechner/peary-for-android","last_synced_at":"2026-05-19T14:32:54.632Z","repository":{"id":159543362,"uuid":"113435660","full_name":"alex-lechner/peary-for-android","owner":"alex-lechner","description":"peary is a shopping list which is linked to a virtual refrigerator that notifies the user if a product is about to expire.","archived":false,"fork":false,"pushed_at":"2017-12-07T10:22:07.000Z","size":992,"stargazers_count":0,"open_issues_count":5,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-24T01:52:35.661Z","etag":null,"topics":["data-sharing","firebase","firebase-database","grocery-list","sharing-data","shopping-list"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alex-lechner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-07T10:18:50.000Z","updated_at":"2022-02-03T18:10:10.000Z","dependencies_parsed_at":"2023-05-21T13:45:31.115Z","dependency_job_id":null,"html_url":"https://github.com/alex-lechner/peary-for-android","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alex-lechner/peary-for-android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex-lechner%2Fpeary-for-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex-lechner%2Fpeary-for-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex-lechner%2Fpeary-for-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex-lechner%2Fpeary-for-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alex-lechner","download_url":"https://codeload.github.com/alex-lechner/peary-for-android/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex-lechner%2Fpeary-for-android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33220151,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-19T07:54:09.561Z","status":"ssl_error","status_checked_at":"2026-05-19T07:54:08.508Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-sharing","firebase","firebase-database","grocery-list","sharing-data","shopping-list"],"created_at":"2024-11-22T01:09:54.555Z","updated_at":"2026-05-19T14:32:54.596Z","avatar_url":"https://github.com/alex-lechner.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# peary for Android\n\n[//]: # (References)\n[firebase app builds]: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html\n[alternate firebase app builds]: https://stackoverflow.com/a/34364376\n[flavors and built variants]: https://blog.davidmedenjak.com/android/2016/11/09/build-variants.html\n[graphische website]: http://www.graphische.net/\n[coding style]: #coding-style\n[license readme]: LICENSE\n[code style rules]: https://source.android.com/setup/code-style\n[peary banner]: imgs/peary-banner.jpg\n\npeary is a shopping list which is linked to a virtual refrigerator that notifies the user if a product is about to expire. It's a lightweight app and lets you share groceries with your flatmates and beloved ones.\n\nThe application has a many-to-many relationship and uses the BaaS (Backend as a Service) NoSQL database from Firebase.\n\n![peary][peary banner]\n\n## Introduction\npeary was a collaborative work and diploma project for the Viennese university [Die Graphische][graphische website] by Alexander Lechner and Sascha Kovacs.\n\nThe application is for students who handle food responsibly and want to avoid food waste by consuming groceries before the expiration date. The product is a real-time grocery list that provides a notification service for soon expiring products to help save the environment. Unlike other shopping list solutions like *Out of Milk* or *Wunderlist*, peary keeps track of the contents of the fridge and their expiration date.\n\nThe idea arose from the uneconomical use of food in many private households. Approximately 53% of food waste in Austria is produced by private households. Food manufacturers have to provide a best-before date for their products because of food regulation. Even salt manufacturers who advertise their salt being over thousands of years old are forced to provide a best-before date. Unfortunately, most people take the best-before date very serious and dump the still edible food.\n\nThe project started in September 2015 and ended in September 2016. In order to graduate successfully the students had to develop a fully functional mobile application either for iOS or Android by the end of September 2016. Additionally, an intensive research work and project documentation had to be done. Alexander Lechner's research work was about \"Graphical User Interfaces and User Experience\" and Sascha Kovacs' research work was about \"The development of Android and iOS applications\".\n\nAlexander Lechner has developed the Android app and Sascha Kovacs has developed the iOS app. Both students have learned the operating system's official programming language (Java for Android \u0026 Swift for iOS) within one year autodidactically.\n\nThe corporate design and app icons were created by Alexander Lechner. The layout and screen designs were created by Sascha Kovacs.\n\n## Contribution\nWe actively welcome any type of support and contribution to this project. \n\nTo submit a pull request: \n1. fork the repo from the ``master`` branch\n2. take a look at open issues and our milestones\n3. update the documentation accordingly\n\nAlso, we encourage you to adhere our [Coding Style][coding style].\n\nIf you like to develop your own version of peary, feel free to do so! But please only in compliance with our [license][license readme] and the following requirements:\n1. **Please do not use the name *peary* (or word modifications of any kind e.g. upper and lower case of certain letters, puns, etc.) for your app.**\n2. **Please do not use or modify our logo, app icon, and artworks (e.g. splash screen, background images, etc.) for your app.**\n3. **In order to comply with the license please make sure to publish your code as well.**\n\n## Setup\n\n### Staging Environment with Firebase\nThis repo uses a staging environment: Production (prod) and Development (dev). The Production environment uses the database from real customers and the Development environment uses an own database for debugging and development purposes.\n\nTo use a staging environment in Firebase you have to create two projects in the Firebase console (one for Production and one for Development) and in both projects, you have to create two apps (one for release build and one for debug build).\n\nAfter this step you should have:\n* 1 Production-project with 1 release-app and 1 debug-app\n* 1 Development-project with 1 release-app and 1 debug-app\n\nWhen you're done creating the projects and their apps you have to download the ``google-services.json`` file of each project. It is important that you download the ``google-services.json`` files **after** both apps - release and debug - are created because the files contain information of both apps.\n\nAfter you have downloaded the ``google-services.json`` files, you have to create a *dev* and a *prod* folder in your *src* folder and move your ``google-services.json`` files in these folders accordingly like shown below: \n\n``` \napp/\n    src/\n        main/\n        dev/\n             google-services.json (for dev only)\n        prod/\n             google-services.json (for prod only)\n```\n\nWe're almost done! Now open the ``app/src/build.gradle`` file for some configurations. Between the ``android { ... }`` block put the following at the bottom:\n````gradle\nandroid {\n\n    flavorDimensions \"env\"\n    productFlavors {\n        dev {\n            dimension \"env\"\n        }\n        prod{\n            dimension \"env\"\n        }\n    }\n}\n````\nAfter the Gradle sync you should be able to see ``devDebug``, ``devRelease``, ``prodDebug`` \u0026 ``prodRelease`` if you navigate to the ``Build Variants`` tab at the very left of Android Studio and click on the build variant.\n\n**Important:** If you clone this repo and use my ``build.gradle`` file, please notice that I have set an application suffix in my debug build types:\n````gradle\nandroid {\n    buildTypes {\n        debug {\n            applicationIdSuffix \".debug\"\n        }\n    }\n}\n````\nIf you want this as well, you have to set as package name *com.yourapp.app.**debug*** in both of your debug apps in the Production-project and the Development-project. Otherwise, you will get an error from your IDE and will be unable to compile your app.\n\nIf you get stuck please take a look at [the official blog post from Firebase about Android app builds][firebase app builds]. Also, this [Stackoverflow answer][alternate firebase app builds] might help you get your environment up and running.\n\nIf you are interested in working with product flavors and build variants, you can find out more about [Working with multiple flavors and build variants on David Medenjak's blog][flavors and built variants].\n\n### Signing your app\nIf you want to sign your app for a release build and save your settings (store file, passwords, etc.) in the app's ``build.gradle`` file, then do the following steps:\n1. Add the following to the ``android { ... }`` block:\n````gradle\nandroid {\n     signingConfigs {\n            release {\n                storeFile file(keyStoreFile)\n                storePassword keyStorePassword\n                keyAlias keyAliasName\n                keyPassword keyAliasPassword\n            }\n        }\n        buildTypes {\n            release {\n                signingConfig signingConfigs.release\n            }\n        }\n}\n````\n2. Set your data in the ``gradle.properties`` file like so:\n````\nkeyStoreFile=your/path/to/keys.jks\nkeyStorePassword=mySecretKeyStorePassword\nkeyAliasName=myAppReleaseName\nkeyAliasPassword=mySecretPrivateKeyPassword\n````\nI have included a ``gradle.properties.example`` file which you can use for this step.\n\n**Important**: Since your ``gradle.properties`` contains sensitive data, this file should never be tracked by your Version Control System. For safety reasons the ``gradle.properties`` is already defined in the ``.gitignore`` file (only for Git users!).\n\nWhen you're done and you want to run a release build then type `gradlew assembleRelease` in the projects root directory either from the built-in Terminal in Android Studio or from the Command Line on Windows.\nOn Linux run `./gradlew assembleRelease` in the projects root directory.\nIf you are using this method then Android Studio is building the .apk-File in ``yourProject/app/build/outputs/apk/prod/release``.\n\nAlternatively, you can use ``Build`` \u003e ``Generate Signed APK...`` in the top menu of Android Studio.\n\n## Coding Style\nBasically, the project aims to follow the [Java Code Style Rules][code style rules]. Here are the most important:\n* Tab size and Indent are 4\n* Continuation indent is 8\n* Opening braces to appear on the same line as code\n* Same variables to declare on the same line if possible \n* Use CamelCase notation\n* Non-public, non-static field names start with  ``m``\n* Static field names start with ``s``\n* Other fields start with a lower case letter\n* Public static final fields (constants) are ``ALL_CAPS_WITH_UNDERSCORES``.\n\n**Hint:** When working on a file, it's always recommended to reformat the code before committing any changes by navigating to the menu ``Code`` \u003e ``Reformat Code`` in Android Studio.\n\n## License\npeary is licensed under the [GNU GPLv2][license readme].","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falex-lechner%2Fpeary-for-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falex-lechner%2Fpeary-for-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falex-lechner%2Fpeary-for-android/lists"}