/Beanconqueror

An open source project for coffee enthusiasts.

Primary LanguageTypeScriptGNU General Public License v3.0GPL-3.0

license Github All Releases GitHub Release Date Quality Gate Status

Beanconqueror

A cup of coffee is not the same anymore then back in the 80's, thats why I wanted to build a tool for the coffee community.

Coffee has been grown to like the new "black gold", more roasters and more tools outside are growing.

Apart from the mechanical tools like grinders, portafilters etc, the app stores are pretty full of coffee apps.

But none is taken care about the community needs are open source and neither grew up from the own coffee fascination like on my side.

Thats why I build and maintain the Beanconqueror app for you, for me, for every coffee lover outside there.

Download today, track your brews, change your recipes, to get the best tasting cup of coffee you've ever had.

Follow me

| Website | Instagram | Facebook |

Sneak preview

Beanconqueror gif

Articles

Threads

Rankings

On January 2021, the app got a bit hyped, through german featuring articles, the top rankings because of this you find below.

Android

Top charts: Eat & Drink - Rank 5 Eat & Drink Ranking - Rank 70

iOS

Eat & Drink Raking - Rank 36

Features

Different features are supported by this app, a brief overview you'll find here.

  • Add your own beans / grinders / preparation methods
  • Record different brew-parameters like:
    • grind size
    • grind amount
    • brew time
    • first coffee drip
    • images
    • etc.
  • Manage your own workflow, first grind amount, then grind size? No problem
  • Archive old beans / grinders / preparation methods
  • Rate your brews
  • Cup your brews by SCA
  • Own roasting section
  • Own water section
  • Cup your brews by aromatics or flavors
  • Connect smart scales (Decent Scale, Acaia Lunar, Hiroia Jimmy, Felicita)

Special thanks

  • Nicola for giving the app a whole new design.
  • Frank for translating the app into spanish.
  • Halil Portakal for Turkish translation
  • Jiageng Ding for Chinese translation

Getting the App

The App is a cross platform application, running on the ionic framework.

Android

Download the latest version here.

If you don't want to download the app by playstore, just have a look on the release page.

iOS

Download the latest version here.

💖 Support the project

You want to support me, to access more people to explore the world of good coffee

Donate - Support me once

Coffee - Support me once or often

Or sponsor me via Github

Thanks! ❤️

Contribution

Before continuing it is important to note that Beanconqueror is open source available.

I welcome pull requests, but you will be required to sign the Beanconqueror CLA before any contributions can be merged.

Statistics

Graphefruit github stats

Top Langs

Questions

Why is external storage not supported?

Sadly there are some issues to read/use files from external storage apache/cordova-plugin-file#350

Why is image-export functionality not support on iOS?

iOS filesystem is different then on Android, because of this images cannot just be exported. Thats why just Android is support by now.

iOS - iCloud-Backup

You can backup Beanconqueror via iCloud, with this you can transfer all data to another device without any loss.

Analytics

All tracked data/analytics are visible here: Website

Which requirements does the app needs?

The app needs access to your filesystem aswell as the camera

  • Filesytem: Needed to save images which you took on beans/brews etc or exporting your settings.
  • Camera: Needed to take picures or access the photo library to set images for your beans/brews
  • Internet: NOT NEEDED! But needed if you want to send me some analytics information to make the app better :)
  • GPS: NOT NEEDED! Activated through settings, saves the brew location
  • Apple Health: NOT NEEDED! Activated through settings, saves caffeine amount
  • Wake look: NOT NEEDED! Activated through settings, won't let your phone get into sleep mode while brewing
  • Bluetooth: NOT NEEDED! Activated for smart scale use.

Develop on your own

Development & Building it yourself

If you're not familiar with Ionic or Cordova read through the introduction. To get started with anything you need Node.js installed

Want to check the code quality?

https://sonarcloud.io/dashboard?id=graphefruit_Beanconqueror

Get Started

npm install -g cordova@11.0.0 npm install -g @ionic/cli npm run prepare

Build iOS

ionic cordova build ios

Build Android

ionic cordova build android

Check outdated dependencies

npm outdated

Check outdated plugins

cordova-check-plugins

NPM-Version

Don't use NPM V 7 right now, 6.14.11 works fine

iOS-Version:

ionic cordova platform add ios@6.2.0

Android-Version:

ionic cordova platform add android@10.1.2

Github Page Hosting

https://stackoverflow.com/questions/60357663/do-apple-app-site-association-files-work-with-github-pages-i-e-site-github-io

Upgrade Ionic if needed:

npm install @ionic/angular@6.4.0 -> Or the actual active version

Installing AAB on your android (mac)

https://stackoverflow.com/questions/50419286/install-android-app-bundle-on-device brew install bundletool bundletool build-apks --bundle=./app.aab --output=./app.apks bundletool install-apks --apks=app.apks

#Overwrite plugin.xmls After SDK Target 31 needs to be supported, and older plugins doesn't have the android-export flag, we need to add them ourself...

Cordova-plugin-x-socialsharing <receiver android:name="nl.xservices.plugins.ShareChooserPendingIntent" android:exported="false" android:enabled="true">

cordova-plugin-telerik-imagepicker <activity android:exported="false" android:label="@string/multi_app_name" android:name="com.synconset.MultiImageChooserActivity" android:theme="@style/Theme.AppCompat.Light">

fttx-phonegap-plugin-barcodescanner <activity android:name="com.google.zxing.client.android.encode.EncodeActivity" android:exported="false" android:label="Share"/>

cordova-plugin-file/src/android ContentFileSystem.java -> Temp fix for import String encodedPath = inputURL.uri.getEncodedPath(); String authorityAndPath = encodedPath.substring(encodedPath.indexOf(this.name) + 1 + this.name.length() + 2);