Skip to content

A sample demo app (two screen TODO list app) which has Clean Architecture with MVVM , UI built with Jetpack Compose and includes Modern Android Development Best Practices

License

bhavnathacker/JetTasks

Repository files navigation

Feature Graphic

GitHub license GitHub stars GitHub stars GitHub stars GitHub follow Twitter Follow

JetTasks

A sample demo app (two screen todo list app) which has Clean Architecture with MVVM , UI built with Jetpack Compose and includes Modern Android Development Best Practices with components as below:

  • Jetpack Compose - UI (Includes - Text, Button, Dropdown Menu, Date Picker, Toggle Switch, RecyclerView, ConstraintLayout and Floating Action Button)
  • Kotlin Flow
  • Hilt - Dependency injection
  • Kotlin Coroutines
  • Room with Coroutines & Flow Support
  • Jetpack Datastore - Proto DataStore
  • Jetpack Compose Navigation - With SafeArgs
  • Jetpack Compose Theming - With Light & Dark Mode Support

This App is inspired by Working with Proto DataStore Google Codelabs and includes Local Data Storage support - with Room as well as Proto DataStore.

  • Room - Saves the Tasks created by User
  • Proto DataStore - Saves User Preferences(SortOrder and ShowCompleted flag)

Try latest JetTasks app apk from below 👇

JetTasks

Light Mode

Task List Task Details App Tour

Dark Mode

Task List Task Details App Tour

JetTasks Package Structure

com.bhavnathacker.jettasks
├── data                  # DATA LAYER
│   ├── local             # Local Persistence (Room) Database
│   │   ├── TaskDao          # Data Access Object for Room
│   │   └── TaskDatabase     # Database Instance      
│   └── repository        # All Repositories implemetations
│       └── TaskRepositoryImpl             # Task Repo linked to Room
│       └── UserPreferencesRepositoryImpl   # User Preference Repo linked to DataStoree
├── domain                  # DOMAIN LAYER
│   ├── use_cases             # Use cases to interact with Repositories
│   │   ├── TaskUseCases          #  To interact with Task Repository
│   │   └── UserPreferenceUseCases     # To interact with User Preference Repository
│   └── model             # Model Classes
│   │   └── Task         
│   │   └── TaskStatus     
│   │   └── TaskPriority    
│   └── repository        # All Repositories
│       └── TaskRepository             # Task Repo linked to Room
│       └── UserPreferencesRepository   # User Preference Repo linked to DataStore
│       └── UserPreferencesSerializer   # Serializer for UserPreferences required by DataStore
├── di                    # DI LAYER (Hilt DI Module)
├── ui                    # UI LAYER
│   ├── components            # Reusable UI components
│   ├── events                # Events from Screens
│   ├── navigation            # Navigation Routes & Navigation Graph
│   ├── states                # States for Screen (e.g. TaskUiModel)
│   ├── screens               # Task List and Detail Screens
│   ├── theme                 # Theme setup
│   ├── viewmodels            # TaskListViewModel, TaskDetailViewModel
├── util                  # Extension functions
├── MainActivity.kt       # MainActivity 
├── TaskApplication       # Application class


Architecture

App follows MVVM & Guide to Recommended architecture.

IDE (Build Tool)

You need Android Studio BumbleBee or above to build this project.


Contact Me!

I would love to hear from you. Here are my details:

DM me at


Contribute

You are most Welcome to Contribute!

Please see Contributing Guidelines.


License

    Apache 2.0 License


    Copyright 2022 Bhavna Thacker

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

About

A sample demo app (two screen TODO list app) which has Clean Architecture with MVVM , UI built with Jetpack Compose and includes Modern Android Development Best Practices

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages