Skip to content

CihatBostanci/NoteApp

Repository files navigation

Note App

General info

This project is simple Android Note App to learn recommended by Google MVVM and Repository Pattern.

Technology

Try to use these technology Coroutines, Room , Navigation Component, unit test with io mockk, koin etc. without remote service.

Structure

While doing this app, I want to explain my tech stack in android development process.

  • Firstly, This app created with MVVM (Model-View-ViewModel) that is recommended by Google and written on Kotlin Language 100%.
  • While using MVVM, I chose Single Activity-Multiple Fragments Structure with JetPack Navigation Architecture Component
  • On the other hand we know that if the app is not big enough as we can use Single Activity-Multiple Fragment structure otherwise it can not be good performance such as CPU, Memory Allocation and Memory Leaks etc.
  • Besides that, I used Light weight koin Dependency Injection Library works as Service Locater that provides SOLID principles and doing maintainable test easily.
  • While doing database operation, I used Coroutines to handle. It can easily lifecycle aware and lightweight thread system to deal with Input Output operations with IO Thread. Thus Main thread may not overload.
  • For the UI, the Material Library used in this project as possible and use some Animations and Transitions.
  • For the local data provider, I used Room SQLite DataBase and SharedPreferences.
  • Business Operation are in the following; Users can edit, delete and create their notes. There are two tables one - to - many relationships each other that are NoteModel(represents Many) and UserModel (represents One)
  • For the Helper to User Operations, I Used Shared Preferences Manager while create, edit and delete operations and to handle Users.
  • Unit tests were written for repository and view model
  • Trying to use Kotlin Lint and Android name conventions.

Feature

Project is included according to user create a notes, update their notes and delete their notes if note updated note changed.

  • Login Page

Login Page

  • Create A Note

Create A Note Page

  • Update A Note

Update A Note Page

  • Note List

 Note List

  • Note Delete

 Note Delete