Skip to content

Steampunk1453/todo-task-manager-android

Repository files navigation

MyTodoTaskManager

License Build Status

MyTodoTaskManager is an application to remind a user different kinds of tasks like watch TV shows, movies and read books.

Android Application developed with Kotlin, Clean Architecture, MVVM pattern, Koin, Coroutines, Retrofit, Room, JWT and MockK for testing.

Download

Currently available on the Play store.

Get it on Google Play

Go to Releases to download the latest version.

Screenshots

play

Technical details

MyTodoTaskManager is based on MVVM and Repository patterns.

The app uses coroutines and Room database as local cache to avoid API calls.

The API (Back-end) URL is deployed on Heroku: todo-task-manager-heroku

You can find the API project in: todo-task-manager-github

Tech stack

  • Minimum SDK level 21
  • Kotlin based + Coroutines for asynchronous.
  • JetPack
    • LiveData - notify domain layer data to views.
    • Lifecycle - dispose of observing data when lifecycle state changes.
    • ViewModel - UI related data holder, lifecycle aware.
    • Room Persistence - construct a database using the abstract layer.
  • Architecture
    • MVVM (View - DataBinding - ViewModel - Model)
    • Repository pattern
    • Koin - dependency injection.
  • Retrofit2 & Gson - construct the REST APIs.
  • OkHttp3 - implementing interceptor, logging and mocking web server.
  • Timber - logging.
  • Material-Components - Material design components for views.

Unit Testing Frameworks

Unit Tests verify the interactions of use cases between repositories and dao & REST api requests.

  • JUnit - a programmer oriented testing framework.
  • MockK - a mocking library for Kotlin.

Local environment

  • You can test the application running it in local, this is the default API server:

        buildConfigField "String", "SERVER_URL", '"https://pers-task-manager.herokuapp.com/api/"'
    
  • Also, you can run API project in local, following:

    Readme todo-task-manager

  • In the app file build.gradle you have to add:

    • If you use emulator

        buildConfigField "String", "SERVER_URL", '"http://10.0.2.2:8080/api/"'
      
    • If you use your phone

        buildConfigField "String", "SERVER_URL", '"http://[your local server IP address]:8080/api/"'
      

Updates version 1.1.0

  • Upgrade Kotlin, Java, Gradle and dependencies versions
  • Add Room DB migration to create TitleInfo table
  • Populate suggested titles for TV shows and movies using the API (Back-end) to invoke IMDb API provider
  • Add radio buttons to choose between TV Shows and Movies to filter suggested titles

About

Android application with Kotlin, Clean Architecture, MVVM, Koin, Coroutines, Retrofit, Room, JWT, MockK and GitHub actions

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages