Avidraghav MyNotes Save

πŸ“ A demo todo/notes app which demonstrates the use of MVVM architecture with Test-cases, Navigation Component Library, Room Database, LiveData, Coroutines, Datastore etc.

Project README

:pencil: MyNotes

Android-CI Actions Status GitHub license GitHub stars GitHub forks Twitter Follow

Hactoberfest 2022 Android Weekly Contributions Highly Welcome Availble issues to contribute

MyNotes is a Demo app which demonstrates the use of MVVM architecture, Dependency Injection, Navigation Component Library, Room Database, LiveData, Coroutines, Datastore and other Modern Android Development.

:movie_camera: Working Demo

πŸ—‘οΈ Dependency Injection

The project uses Hilt for Dependency Injection :syringe:

I highly recommend to start with Manual Dependency injection method and then move to Hilt, see branch di-ManualInjection for implementation.

  • To Implement DI with Hilt see di-hilt

:wrench: Built With

  • Kotlin - Programming Language Used in the app.
  • Navigation Component Library - For setting up app's navigation.
  • Room Database - For persisting data/tasks in device's local storage.
  • Kotlin Coroutines - To execute code asynchronously.
  • Flow - In the simplest of ways consider this as a pipe through which the data flows in the app, by using flow a developer doesn't need to refresh variables which contain data.
  • LiveData - Used to observe the data on the UI layer
  • ViewModel - To Store UI-related data that isnt destroyed on UI changes.
  • RecylerView - To Display data in a list format.
  • Hilt - For Dependency Injection
  • Datastore - For Storing Data

see feature/Prefernces-Datastore to Implement Preferences Datastore by following Abstraction

:white_check_mark: Tests

  • For an example of Room Database Schema Migration see branch room-migration-testing
  • For Implementing Instrumented Test Cases for Room Database see branch testing
  • For Implementing Unit Tests for ViewModel and Repository by using the latest testing apis (as of August 2022) see branch testing-coroutines- 1.6.1

πŸ—οΈ Architecture Design

Screenshot 2022-01-18 at 1 31 48 PM

πŸ¦Έβ€β™‚οΈ Contribtors

Made with contrib.rocks.

This project is made for educational purposes so don't be shy of asking any questions about any concept from the app or about android developement.

Do open issues and raise PRs to I'll try my best to assist you. If this project helps you then do leave a 🌟 :smiley:

πŸ“© Contact

Don't let yourself get caught in the decision paralysis, just start learning and building. πŸ˜‰

DM me at πŸ‘‡

License

 Copyright 2022 Raghav Aggarwal

   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.
Open Source Agenda is not affiliated with "Avidraghav MyNotes" Project. README Source: avidraghav/MyNotes