A Jetpack Compose App which allows users(humans) to track their projects progress. The app allows the user to break down their projects into easier manageable tasks where they can easily update their tasks' progress.
There is a slight mismatch between the designs and the app implementation: The app does not have project's collaboration - no team members and authentication.
The app uses MVVM (Model View View Model) architecture to have a unidirectional flow of data, separation of concern, testability, and a lot more.
-
Tech Stack
- Kotlin - First class and official programming language for Android development.
- Android Jetpack
- Room - a persistence library provides an abstraction layer over SQLite.
- Lifecycle - perform action when lifecycle state changes.
- ViewModel - store and manage UI-related data in a lifecycle conscious way.
- WorkManager - primary recommended API for background processing.
- DataStore - data storage solution that allows you to store key-value pairs or typed objects with protocol buffers.
- Compose - modern toolkit for building native Android UI
- Kotlin coroutines - Executing code asynchronously.
- Moshi - A modern JSON library for Android, Java and Kotlin
- Flow - An asynchronous version of a Sequence, a type of collection whose values are lazily produced. Flow handles the stream of data asynchronously that executes sequentially.
- HILT - a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project.
-
Gradle
- Gradle Kotlin DSL - For reference purposes, here's an article explaining the migration.
- Plugins
- Ktlint - creates convenient tasks in your Gradle project that run ktlint checks or do code auto format.
-
CI/CD
- Github Actions
- Write tests
- Performance optimization
- Configure detekt
- Complete large screen design implementation
- Improve notifications feature to show notifications on the notifications screen
- User Experience improvements
- Buttons and keyboard behaviour
- Give user feedback on actions
- Ripple effect on buttons
- Milestone deadline should not exceed project deadline
- Not sure whether copy and pasting is working on textfields