Less works is a simple app that help manage tasks in a workspace more easily. It starts with a personal workspace and a feature to share the workspace with otherr users. You can also create groups and manage tasks inside a group
The repository for Lessworks Android App written in Kotlin.
The app is written entirely in Kotlin and uses the Gradle build system.
To build the app, first Make the project and build a release version of the app once done in Android Studio. A canary or a stable version of Android Studio 4.0 or newer is required and may be downloaded from here.
The architecture is built around Android Architecture Components.
We followed the recommendations laid out in the Guide to App Architecture when deciding on the architecture for the app. We kept logic away from Activities and Fragments and moved it to ViewModels. We observed data using LiveData and did custom in code binding to bind UI components in layouts to the app's data sources.
We used a Repository layer for handling data operations. Lessworks's data comes from a few different sources - workspace data is stored in Hasura (with the help of apollo graphql android), and the repository modules are responsible for handling all data operations and abstracting the data sources from the rest of the app. We implemented a lightweight domain layer, which sits between the data layer and the presentation layer, and handles discrete pieces of business logic off the UI thread.
We used Navigation component to simplify into a single Activity app.
Future integrations plan using Room for storing chat data to avoid network load.
We use Hilt for dependency injection. Hilt has proven to reduce upto 75% of the dependency injection code instead of Dagger, and also result in a 13% build time improvement.
The app makes considerable use of the following Firebase components
-
Firebase Cloud Functions mantain push notifications.
-
Firebase Kotlin extension (KTX) libraries to write more idiomatic Kotlin code when calling Firebase APIs. To learn more, read this Firebase blog article on the Firebase KTX libraries.
Using Kotlin for the make the app was an easy choice: I like Kotlin's expressive, concise, and powerful syntax; I find that Kotlin's support for safety features for nullability and immutability made our code more resilient; and I leveraged the enhanced functionality provided by Android Ktx extensions. I preffered coroutines for asynchronous tasks. Coroutines is the recommended way to do asynchronous programming in Kotlin.
Copyright 2021, Jeevan Surendran, All rights reserved.