/MiAssist

Primary LanguageKotlinMIT LicenseMIT

Personal mobile assistant client running on Android

About MiAssist

MiAssist tries to bring together all the common and typical daily use cases of a mobile phone. This ranges from creating tasks, visualising app usage by providing metrics and curating stats for different app permissions. Assist is still in development supporting tasks as a feature at the point of this writing. More features are coming soon since the app is heavily in development. Contribution to the code base is very welcome.

Features
1. Tasks

Create tasks from a single point. Sort and order by date, time and priority.

  • Task list

  • Task detail

  • Create new task

more coming soon ...

2. Installing and running app

The app relies on the following:-

  • compileSdk and targetSdk version : 33
  • minimumSdk version : 26.
  • Android gradle plugin version : 7.3.0.
  • Jetpack compose : 1.2.0.
  • Kotlin : 1.7.0.
  • Android studio: Dolphin
  1. To start with checkout the main branch then run git clone https://github.com/DenisGithuku/Todoey to fork the repository into your local machine.
  2. Proceed by performing a gradle sync to fetch all the dependencies.
  3. Open your terminal (CMD for windows) and proceed by running ./gradlew assembleDebug to build the debug version of the app.
  4. Finish by hitting the run button on android studio to install the app in an emulator or a physical device.
3. Libraries used

The app relies heavily on the unbundled Jetpack suite of libraries which greatly simplify the development of modern Android applications.

  • Room - The Room persistence library provides an abstraction layer over SQLite to allow fluent database access while harnessing the full power of SQLite.
  • Ktlint - ktlint aims to capture the official Kotlin coding conventions and Android Kotlin Style Guide. In some aspects ktlint is a bit more strict*.
  • Hilt - Hilt is a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project. Doing manual dependency injection requires you to construct every class and its dependencies by hand, and to use containers to reuse and manage dependencies.
  • Compose - Jetpack Compose is Android’s recommended modern toolkit for building native UI. It simplifies and accelerates UI development on Android. Quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs.
  • Roboelectric - Robolectric is a framework that brings fast and reliable unit tests to Android. Tests run inside the JVM on your workstation in seconds.
  • Truth - Truth is a library for performing assertions in tests: Truth is owned and maintained by the Guava team. It is used in the majority of the tests in Google’s own codebase.
  • Coroutines - kotlinx.coroutines is a rich library for coroutines developed by JetBrains. It contains a number of high-level coroutine-enabled primitives that this guide covers, including launch, async and others.
  • Hamcrest - Matchers that can be combined to create flexible expressions of intent.
  • Datastore - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers. DataStore uses Kotlin coroutines and Flow to store data asynchronously, consistently, and transactionally.
  • Lifecycle - Lifecycle-aware components perform actions in response to a change in the lifecycle status of another component, such as activities and fragments. These components help you produce better-organized, and often lighter-weight code, that is easier to maintain.
4. More

This app is intended to be used in learning and to showcase the real power of clean architecture and modern app design. By using declarative approach to UI design, the app boasts improved performance and overall user experience.