ComposeNotes

Introduction: Trying out JetPack Compose by building a basic Notes app. And a lot more
More: Author   ReportBugs   
Tags:

Android CI

Compose Notes is a sample app built with :sparkles: Jetpack Compose.

To try out these sample apps, you need to use the latest Canary version of Android Studio 4.2.

This project showcases:-

  • Creating simple UI with Compose
  • State Management
  • Text Input and focus management
  • Integration with architecture components - ViewModel, Room, LiveData
  • Basic animations and transitions
  • Using MVVM pattern with Room database
  • Unit tests and integration tests
  • Dependency injection using Hilt

Status: :construction: Work in progress

The master branch has basic features completed. Other features are still being worked on.

Features

:heavy_check_mark: Simple UI with compose

The project contains 2 simple 'screens'. The NotesList Composable is responsible for displaying the main notes list. The NoteEditor composable displays a simple BaseTextField with certain modifications. It even provides a special visual transformation for the 1st line of Text.

:heavy_check_mark: State Management

State management is done using architecture components such as ViewModel and LiveData. Compose specific State is used at certain places. Flow is used for reactive streams of data.

:heavy_check_mark: Text input and focus management

The NoteEditor composable has heavy focus on text input :pencil: and focus management.

:heavy_check_mark: Integration with architecture components

The app is integrated with architecture components. ViewModel is used for the logic layer of the application. Room is used for data persistence.

:heavy_check_mark: Basic animations

Basic animations :dancer: are included - Crossfade between screens, swipe to delete colour change and size change animation.

:heavy_check_mark: Using MVVM pattern with Room

The app is following the recommended MVVM pattern along with using Room. A repository layer is used for linking room to the ViewModel.

:construction: Unit tests and integration tests

Some basic unit and integration tests are already written. Others will be written soon.

:new: Dependency injection using Hilt

Room database, Dao, Repository and ViewModel are all injected using Hilt. This will allow simpler testing.


This readme is a :construction: work in progress and will be updated :soon:.

License

Copyright 2020 Yashovardhan Dhanania

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.
Apps
About Me
GitHub: Trinea
Facebook: Dev Tools