/qrsync

Cloud synchronized QR code scanner built with Firebase and Android Architecture Components.

Primary LanguageKotlinGNU General Public License v3.0GPL-3.0

QR Sync

QR Sync is a QR code / barcode scanning application for Android.

I originally published the first version in November of 2016 as QReader (com.esapp.qreader).

In an effort to improve my coding skills I'm open sourcing the code that I started rewriting from scratch on June 16, 2018.

Get it on Google Play

About the application

QR Sync makes it easy to save QR codes you scan harnessing the power of cloud databases.

All of your codes are automatically kept in sync across all of your devices, so you can access them wherever you need them.

For each code, the application provides a contextual action based on its type, so that you can interact with the code in a quicker and more efficient way.

The application is completely free to use, it has no ads and no in-app purchases.

Technical details

The app is based on the MVVM presentation layer architecture, is completely written in Kotlin and follows the recommended app architecture provided by Google.

Libraries

  • Android Architecture Components: used for the communication between layers. It fully supports the activities' lifecycle in order to prevent memory leaks and unnecessary network requests.
  • Firebase: the backend of this application.
    • Auth: used to authenticate users
    • Firestore: NoSQL Document DB used to store all the codes
    • Vision (MLKit): machine learning library used to scan all kinds of codes
  • Koin: easy to use and flexible dependency injection library for Kotlin.
  • Gson: serialization/deserialization library for JSON objects.
  • Arrow: Typed Functional Programming library for Kotlin.
  • CameraView: optimized and lightweight Camera2API library.