Trying out JetPack Compose by building a basic Notes app. And a lot more

Overview

📝 Compose Notes

Android CI

Compose Notes is a sample app built with 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: 🚧 Work in progress

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

Features

✔️ 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.

✔️ 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.

✔️ Text input and focus management

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

✔️ 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.

✔️ Basic animations

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

✔️ 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.

🚧 Unit tests and integration tests

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

🆕 Dependency injection using Hilt

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


This readme is a 🚧 work in progress and will be updated 🔜 .

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.
You might also like...
Provides Kotlin libs and some features for building Kotlin plugins
Provides Kotlin libs and some features for building Kotlin plugins

Kotlin Plugin Provides Kotlin libs and some features for building awesome Kotlin plugins. Can be used instead of CreeperFace's KotlinLib (don't use to

A Template for a Github Actions Pipeline for building and publishing Gradle-JVM Applications

github-actions-cd-template-jvm A Template for a Github Actions Pipeline for building and publishing Gradle-JVM Applications It build a executable shad

Some basic samples of Kotlin for Android
Some basic samples of Kotlin for Android

android-kotlin-samples Some basic samples of Kotlin for Android Samples HttpUrlConnection and AsyncTask ListView with BaseAdapter and Data Object OkHt

🔓 Kotlin version of the popular google/easypermissions wrapper library to simplify basic system permissions logic on Android M or higher.
🔓 Kotlin version of the popular google/easypermissions wrapper library to simplify basic system permissions logic on Android M or higher.

EasyPermissions-ktx Kotlin version of the popular googlesample/easypermissions wrapper library to simplify basic system permissions logic on Android M

A mobile application developed for *Android* devices, aimed at 11th grade students in which they can take some basic training tests for presentation of external tests.

ApliKTest11 Application with Kit of questions and Knowledge Test for the preparation of the Saber Test. Description A mobile application developed for

A basic application demonstrating IPFS for collaborative data analysis, from the perspective of a Data Analysis Provider.

Spacebox A basic application demonstrating IPFS for collaborative data analysis, from the perspective of a Data Analysis Provider. Description This pr

Cross-platform framework for building truly native mobile apps with Java or Kotlin. Write Once Run Anywhere support for iOS, Android, Desktop & Web.
Cross-platform framework for building truly native mobile apps with Java or Kotlin. Write Once Run Anywhere support for iOS, Android, Desktop & Web.

Codename One - Cross Platform Native Apps with Java or Kotlin Codename One is a mobile first cross platform environment for Java and Kotlin developers

A sample project that helps to start building a Mobile Kotlin Multiplatform application
A sample project that helps to start building a Mobile Kotlin Multiplatform application

Mobile Kotlin multiplatform project template A sample project that helps to start building a Mobile Kotlin Multiplatform application. It establishes a

A small DSL to make building a conversation in Bukkit easy.

Konversation Konversation provides a simple builder to construct chains of prompts to be used in the conversation API present in Bukkit. Bukkit only p

Comments
  • Added support for images in notes

    Added support for images in notes

    WIP:-

    • [x] Save image URI with notes (Database migration needed)
    • [x] Add Image to the editor layout
    • [x] Add Image to the list
    • [x] Call camera intent with a new file location to create and save image
    • [x] Call media intent to allow users to add images from gallery
    enhancement 
    opened by yashovardhan99 1
Owner
Yashovardhan Dhanania
Incoming Associate Consultant @Microsoft; Founder @AndroidDevJaipur;
Yashovardhan Dhanania
Muhammad Ariananda 7 Jul 17, 2022
A minimal notes application in Jetpack Compose with MVVM architecture. Built with components like DataStore, Coroutines, ViewModel, LiveData, Room, Navigation-Compose, Coil, koin etc.

Paper - A Minimal Notes App A minimal notes application in Jetpack Compose with MVVM architecture. Built with components like DataStore, Coroutines, V

Akshay Sharma 139 Jan 2, 2023
An experimental tool for building console UI in Kotlin using the Jetpack Compose compiler/runtime

An experimental tool for building console UI in Kotlin using the Jetpack Compose compiler/runtime

Jake Wharton 1.4k Dec 28, 2022
An amazing expense tracker app, with great features and beautiful UI. Check it out!

My Expense Tracker Expense tracker app to keep your finances in order. Built entirely in Kotlin using modern architecture components. Build ??️ My Exp

Ken Ali 7 Oct 26, 2022
Basic Android app to use Jetpack WorkManager API features

jetpack-work-manager-playground Basic Android app to use Jetpack WorkManager API features Jetpack WorkManager Playground Demo app Jetpack WorkManager

Raheem 0 Dec 9, 2021
A tool that can mock out an existing Appium session, supports both Java and Kotlin.

appium-mocker A tool that can mock out an existing Appium session, supports both Java and Kotlin. How to install latest appium-mocker Beta/Snapshots <

aaronLLL 21 Jun 8, 2022
Android app using Kotlin to manage to-do notes with firebase as backend service

TO-DO Manager TO-DO Manager is a simple note management app. Unlike other apps, TO-DO Manager is free and open source. You can access your nots from a

Ahmed Badr 3 Dec 10, 2022
Name of your app is an android app that allows building a todo list

Project 1 - SimpleToDo Name of your app is an android app that allows building a todo list and basic todo items management functionality including add

Javier Nazario 0 Nov 23, 2021
Basic app to use different type of observables StateFlow, Flow, SharedFlow, LiveData, State, Channel...

stateflow-flow-sharedflow-livedata Basic app to use different type of observables StateFlow, Flow, SharedFlow, LiveData, State, Channel... StateFlow,

Raheem 5 Dec 21, 2022
Built with Jetpack compose, multi modules MVVM clean architecture, coroutines + flow, dependency injection, jetpack navigation and other jetpack components

RickAndMortyCompose - Work in progress A simple app using Jetpack compose, clean architecture, multi modules, coroutines + flows, dependency injection

Daniel Waiguru 9 Jul 13, 2022