📒 NotyKT is a complete 💎Kotlin-stack (Backend + Android) 📱 application built to demonstrate the use of Modern development tools with best practices implementation🦸.

Overview

NotyKT 🖊️

Deploy (API) Build (API) Build (Android) Release

GitHub license ktlint GitHub stars GitHub forks GitHub watchers

NotyKT is the complete Kotlin-stack note taking 🖊️ application 📱 built to demonstrate a use of Kotlin programming language in server-side and Modern Android development tools. Dedicated to all Android Developers with ❤️ .

You can Install and test latest NotyKT Android app from below 👇

Noty Simple App Noty Compose App

📄 Project Documentation

Visit the documentation of this project to get more information in detail.

💡 About the Project

This project includes two subprojects:

🔹 Noty API

This is a REST API built using Ktor Framework deployed on Heroku.
Navigate to /noty-api directory to browse and know more about Noty API project.

🔹 Noty Android Application

This is an Android application which uses Noty REST API. It has application UI implementation using traditional Android's Navigation Architecture as well as modern Jetpack 🚀 Compose UI.
Navigate to /noty-android directory to browse and know more about Noty Android project.

Want to Contribute 🙋‍♂️ ?

Awesome! If you want to contribute to this project, you're always welcome! See Contributing Guidelines. You can also take a look at NotyKT's Project Status Tracker for getting more information about current or upcoming tasks.

Want to discuss? 💬

Have any questions, doubts or want to present your opinions, views? You're always welcome. You can start discussions.

Contributors

License

Copyright 2020 Shreyas Patil

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.
Comments
  • Added SavedStateHandle in ViewModel to recover save note data

    Added SavedStateHandle in ViewModel to recover save note data

    from process death.

    Used SavedStateHandle state in case of process death to resume the on-going add note operation.

    This is my first pull request, please let me know if anything is missing!

    opened by devmanishpatole 24
  • [Backend] Feature Request: Pin Notes

    [Backend] Feature Request: Pin Notes

    This is regarding feature "pinning notes" as discussed here: #534

    This also needs to be implemented on the backend side so that the state of the pinning of notes will be persisted.

    Task

    Create an API for updating the note's pin.

    API Contract

    Request

    PUT /note/<NOTE_ID>/pin
    Content-Type: application/json
    Authorization: Bearer <TOKEN>
    
    {
      "isPinned": true
    }
    

    Response

    1. When note gets pinned/unpinned successfully

    Response Code: 200

    {
      "status": "SUCCESS",
      "message": "Note is pinned/unpinned successfully",
      "noteId": <NOTE ID>
    }
    
    2. When note note exist in system

    Response Code: 404

    {
      "status": "NOT_FOUND",
      "message": "Note not exist with ID '$noteId'"
    }
    
    3. When unauthorized user tries to update note pin

    Response Code: 401

    {
      "status": "UNAUTHORIZED",
      "message": "Access denied"
    }
    
    enhancement noty-api hacktoberfest 
    opened by PatilShreyas 13
  • Test cases for Android application components

    Test cases for Android application components

    • Add Unit tests for modules data, repository, app etc.
    • Add some integrations tests for Android.
    • We can use libraries like Kotest, Mockk, etc for testing which are completely Kotlin libraries.
    priority-medium 
    opened by PatilShreyas 11
  • Defect: Progress dialog keeps running in infinite loop

    Defect: Progress dialog keeps running in infinite loop

    Steps to reproduce:

    1. Login to the app.
    2. Click on add note, navigate to add note detail screen
    3. add title, add notes, click on save
    4. navigate back to list of notes
    5. click on newly added note, navigate to note detail screen
    6. click on delete note button
    7. once note deleted, it navigates back to list of notes screen where progress dialog keeps loading indefinitely
    bug noty-android hacktoberfest 
    opened by Varsha-Kulkarni 7
  • Replace deprecated OptionsMenu with MenuProvider

    Replace deprecated OptionsMenu with MenuProvider

    Replace the usages of

    setHasOptionsMenu(Boolean): Unit
    onCreateOptionsMenu(Menu, MenuInflater): Unit
    onOptionsItemSelected(MenuItem): Boolean
    onPrepareOptionsMenu(Menu): Unit
    

    with MenuProvider

    noty-android hacktoberfest 
    opened by Varsha-Kulkarni 5
  • [Backend] Implement Feature: Pin Notes

    [Backend] Implement Feature: Pin Notes

    Summary

    Pin notes so that they will be added to priority spot, at the top for easy access, similar to Google Keep. Closes: #541

    Description for the changelog

    API Endpoint:

    PUT /note/<NOTE_ID>/pin
    Content-Type: application/json
    Authorization: Bearer <TOKEN>
    
    {
      "isPinned": true
    }
    

    Response

    1. When note gets pinned/unpinned successfully Response Code: 200
    {
      "status": "SUCCESS",
      "message": "Note is pinned/unpinned successfully",
      "noteId": <NOTE ID>
    }
    
    1. When note note exist in system Response Code: 404
    {
      "status": "NOT_FOUND",
      "message": "Note not exist with ID '$noteId'"
    }
    
    1. When unauthorized user tries to update note pin Response Code: 401
    {
      "status": "UNAUTHORIZED",
      "message": "Access denied"
    }
    

    A picture or screenshot regarding change

    https://user-images.githubusercontent.com/60615909/194336416-463f0a79-52da-4977-905e-5ed37ad7d08e.mp4

    Checklist

    • [x] Build and linting is passing.
    • [x] This change is not breaking existing flow of a system.
    • [x] I have written test case for this change.
    • [x] This change is tested from all aspects.
    • [ ] Implemented any new third-party library (Which not existed before this change).
    hacktoberfest-accepted 
    opened by mrfamouskk7 5
  • [Android] Implement API for updating Pin/Unpin state in Android app

    [Android] Implement API for updating Pin/Unpin state in Android app

    Currently, all work regarding the pin/unpin feature is completed. Just API call invocation implementation is pending from the android app side.

    Once #541 is merged, the work on this issue can be started.

    noty-android hacktoberfest Blocked 
    opened by PatilShreyas 5
  • Room database injection - Dagger hilt

    Room database injection - Dagger hilt

    Here, room database is provided through dagger hilt as a singleton in the Application component, so I think it is not required to have the singleton pattern as hilt would ensure that room database instance is a singleton.

    So it would be better to build the database in DatabaseModule itself.

        @Singleton
        @Provides
        fun provideDatabase(
            @ApplicationContext context: Context
        ) = Room.databaseBuilder(
            context.applicationContext,
            NotyDatabase::class.java,
            DB_NAME
        ).addMigrations(*DatabaseMigrations.MIGRATIONS).build()
    
    
    opened by sidhu18 5
  • [Android] Feature Request: Pin notes

    [Android] Feature Request: Pin notes

    Pin notes so that they will be added to priority spot, at the top for easy access, similar to Google Keep.

    We can further discuss about UI changes and state handling required to show these pinned notes.

    enhancement noty-android hacktoberfest 
    opened by Varsha-Kulkarni 4
  • Failed to run test NotesScreenTest

    Failed to run test NotesScreenTest

    Successfully am able to run the compose app, but the tests always fail. I am using the Android Studio Chipmunk (2021.2.1)

    java.lang.AssertionError: Activity never becomes requested state "[STARTED, CREATED, DESTROYED, RESUMED]" (last lifecycle transition = "PRE_ON_CREATE") at androidx.test.core.app.ActivityScenario.waitForActivityToBecomeAnyOf(ActivityScenario.java:338) at androidx.test.core.app.ActivityScenario.launchInternal(ActivityScenario.java:272) at androidx.test.core.app.ActivityScenario.launch(ActivityScenario.java:195) at androidx.test.ext.junit.rules.ActivityScenarioRule.lambda$new$0$ActivityScenarioRule(ActivityScenarioRule.java:70) at androidx.test.ext.junit.rules.ActivityScenarioRule$$Lambda$0.get(ActivityScenarioRule.java:70) at androidx.test.ext.junit.rules.ActivityScenarioRule.before(ActivityScenarioRule.java:103) at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:50) at androidx.compose.ui.test.junit4.AndroidComposeTestRule$apply$1$evaluate$1.invoke(AndroidComposeTestRule.android.kt:148) at androidx.compose.ui.test.junit4.AndroidComposeTestRule$apply$1$evaluate$1.invoke(AndroidComposeTestRule.android.kt:147) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment$AndroidComposeUiTestImpl.withDisposableContent(ComposeUiTest.android.kt:447) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment$runTest$1$1$1$1$1$1$1.invoke(ComposeUiTest.android.kt:265) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment.withTextInputService(ComposeUiTest.android.kt:331) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment.access$withTextInputService(ComposeUiTest.android.kt:195) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment$runTest$1$1$1$1$1$1.invoke(ComposeUiTest.android.kt:264) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment.withComposeIdlingResource(ComposeUiTest.android.kt:318) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment.access$withComposeIdlingResource(ComposeUiTest.android.kt:195) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment$runTest$1$1$1$1$1.invoke(ComposeUiTest.android.kt:263) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment.withWindowRecomposer(ComposeUiTest.android.kt:292) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment.access$withWindowRecomposer(ComposeUiTest.android.kt:195) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment$runTest$1$1$1$1.invoke(ComposeUiTest.android.kt:262) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment.withTestCoroutines(ComposeUiTest.android.kt:305) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment.access$withTestCoroutines(ComposeUiTest.android.kt:195) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment$runTest$1$1$1.invoke(ComposeUiTest.android.kt:261) at androidx.compose.ui.test.junit4.EspressoLink.withStrategy(EspressoLink.android.kt:66) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment$runTest$1$1.invoke(ComposeUiTest.android.kt:260) at androidx.compose.ui.test.junit4.IdlingResourceRegistry.withRegistry(IdlingResourceRegistry.jvm.kt:157) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment$runTest$1.invoke(ComposeUiTest.android.kt:259) at androidx.compose.ui.test.junit4.ComposeRootRegistry.withRegistry(ComposeRootRegistry.android.kt:146) at androidx.compose.ui.test.AndroidComposeUiTestEnvironment.runTest(ComposeUiTest.android.kt:258) at androidx.compose.ui.test.junit4.AndroidComposeTestRule$apply$1.evaluate(AndroidComposeTestRule.android.kt:147) at dev.shreyaspatil.noty.composeapp.rule.WorkManagerRule$apply$1.evaluate(WorkManagerRule.kt:39) at dagger.hilt.android.internal.testing.MarkThatRulesRanRule$1.evaluate(MarkThatRulesRanRule.java:108) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:27) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56) at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:444) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2205)

    hacktoberfest 
    opened by tmstaedt 4
  • [ComposeApp] Improve UI for dark mode

    [ComposeApp] Improve UI for dark mode

    Summary

    1. Dark mode improvements in Login and Signup
    2. Fix Clipping of Card Shadow in About page

    Description for the changelog

    A picture or screenshot regarding change

    image

    image

    image

    Checklist

    • [x] Build and linting is passing.
    • [x] This change is not breaking existing flow of a system.
    • [ ] I have written test case for this change. (not required)
    • [x] This change is tested from all aspects.
    • [ ] Implemented any new third-party library (Which not existed before this change).

    closes #282 , closes #286

    noty-android hacktoberfest hacktoberfest-accepted 
    opened by yogeshpaliyal 4
  • Fix issue #592 for error dialog

    Fix issue #592 for error dialog

    Summary

    Fix for issue https://github.com/PatilShreyas/NotyKT/issues/592

    Demo

    https://user-images.githubusercontent.com/111201146/211228523-7b298e94-32b9-49a3-b898-438bd5e6a4f5.mp4

    Checklist

    • [x] Build and linting is passing.
    • [x] This change is not breaking existing flow of a system.
    • [ ] I have written test case for this change.
    • [x] This change is tested from all aspects.
    opened by LightningGem 0
  • Error dialog keeps popping up on State changes

    Error dialog keeps popping up on State changes

    Any change to text field in Login or Register screen after error occurred will trigger showErrorDialog in SimpleApp. https://user-images.githubusercontent.com/111201146/211217501-af195fd5-dc7d-45de-bebd-7307687b3ae3.mp4

    Compose version of error dialog holds and mutates a state val isDismissed = remember { mutableStateOf(false) } which leads to different problem : user won`t see error dialog for a second time regardless of different wrong credentials. https://user-images.githubusercontent.com/111201146/211217503-4f0b2807-b598-4adf-b212-664abb28a579.mp4

    One of the solution to both XML and Compose: add new public method to viewModel which makes error string nullable and use it on dialog dismiss/cancel.

    opened by LightningGem 0
  • [Android]: Bump espresso-core from 3.5.0 to 3.5.1 in /noty-android

    [Android]: Bump espresso-core from 3.5.0 to 3.5.1 in /noty-android

    Bumps espresso-core from 3.5.0 to 3.5.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • [Android]: Bump runner from 1.5.1 to 1.5.2 in /noty-android

    [Android]: Bump runner from 1.5.1 to 1.5.2 in /noty-android

    Bumps runner from 1.5.1 to 1.5.2.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • [Android]: Bump junit from 1.1.4 to 1.1.5 in /noty-android

    [Android]: Bump junit from 1.1.4 to 1.1.5 in /noty-android

    Bumps junit from 1.1.4 to 1.1.5.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • [Android]: Bump kotlinVersion from 1.7.20 to 1.8.0 in /noty-android

    [Android]: Bump kotlinVersion from 1.7.20 to 1.8.0 in /noty-android

    Bumps kotlinVersion from 1.7.20 to 1.8.0. Updates kotlin-gradle-plugin from 1.7.20 to 1.8.0

    Release notes

    Sourced from kotlin-gradle-plugin's releases.

    Kotlin 1.8.0

    Changelog

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend

    ... (truncated)

    Changelog

    Sourced from kotlin-gradle-plugin's changelog.

    1.8.0

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend
    • KT-55065 Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend

    ... (truncated)

    Commits
    • da1a843 Add ChangeLog for 1.8.0-RC2
    • d325cf8 Call additional publishToMavenLocal in maven build scripts and enable info
    • 0403d70 Don't leave Gradle daemons after build scripts
    • 52b225d Fix task module-name is not propagated to compiler arguments
    • d40ebc3 Specify versions-maven-plugin version explicitly
    • 2e829ed Fix version parsing crash on Gradle rich version string
    • f603c0e Scripting, IR: fix capturing of implicit receiver
    • 06cbf8f Scripting, tests: enable custom script tests with IR
    • d61cef0 Fix deserialization exception for DNN types from Java
    • ea33e72 JVM IR: script is a valid container for local delegated properties
    • Additional commits viewable in compare view

    Updates kotlin-stdlib from 1.7.20 to 1.8.0

    Release notes

    Sourced from kotlin-stdlib's releases.

    Kotlin 1.8.0

    Changelog

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend

    ... (truncated)

    Changelog

    Sourced from kotlin-stdlib's changelog.

    1.8.0

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend
    • KT-55065 Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend

    ... (truncated)

    Commits
    • da1a843 Add ChangeLog for 1.8.0-RC2
    • d325cf8 Call additional publishToMavenLocal in maven build scripts and enable info
    • 0403d70 Don't leave Gradle daemons after build scripts
    • 52b225d Fix task module-name is not propagated to compiler arguments
    • d40ebc3 Specify versions-maven-plugin version explicitly
    • 2e829ed Fix version parsing crash on Gradle rich version string
    • f603c0e Scripting, IR: fix capturing of implicit receiver
    • 06cbf8f Scripting, tests: enable custom script tests with IR
    • d61cef0 Fix deserialization exception for DNN types from Java
    • ea33e72 JVM IR: script is a valid container for local delegated properties
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v2.1.1)
  • v2.1.1(Jan 1, 2023)

    This release includes minor fixes in the application. There are no major changes in the client application
    In the backend API, Migrated hosting of backend API service from Heroku to Railway.app

    🎯Codebase Improvements

    • Upgraded Gradle tooling and other dependency versions.
    • Updated Android Target API version to 33 (Android 13).
    • Use the separate version of Compose and Compose Compiler.
    • Migrated from Accompanist's SwipeRefresh to Material SwipeRefresh.

    Full Changelog: https://github.com/PatilShreyas/NotyKT/compare/v2.1.0...v2.1.1

    Source code(tar.gz)
    Source code(zip)
    noty-android-compose.apk(19.14 MB)
    noty-android-simple.apk(9.17 MB)
  • v2.1.0(Oct 25, 2022)

    This release includes new feature and some fixes in the application.

    🔮 What's New?

    • [#534] Added feature: Pinning note.

    Many thanks to superstar contributors of this feature:

    • @Varsha-Kulkarni for proposing this feature and implementing this for Android.
    • @mrfamouskk7 for developing API for this feature (#541).
    • @tyaporush for implementing API in Android application (#543).

    🐛 Bug Fixes

    • [#535] Fix bug: Keyboard retains after navigating back from Add Note or Note detail screen by @Varsha-Kulkarni.
    • [#536] Fix bug: Progress dialog keeps running in infinite loop by @Varsha-Kulkarni

    🎯 Improvements

    • [#473] Fix failing UI test cases by @tusharpingale04
    • [#547] Replace deprecated OptionsMenu with MenuProvider by @Varsha-Kulkarni
    • [#551] Support password visibility/invisibility toggle button for Password fields in Compose app by @tusharpingale04.
    • [#554] [Backend] Use Hikari DataSource for Database connection pooling by @mrfamouskk7.

    Many Thanks to superstar ⭐ contributors for making NotyKT better in this Hacktoberfest


    Full Changelog: https://github.com/PatilShreyas/NotyKT/compare/v2.0.0...v2.1.0

    Source code(tar.gz)
    Source code(zip)
    noty-android-compose.apk(18.20 MB)
    noty-android-simple.apk(8.74 MB)
  • v2.0.0(Feb 20, 2022)

  • v1.3.2(Nov 30, 2021)

    This release includes a few improvements and fixes in the Jetpack Compose and Simple Application to make them better. All features mentioned below are contributed by @kasem-sm

    🐛 Bug Fixes

    • [#329] Fix crashes when user clicks logout (in Simple App).
    • [#337] Fix not able to add note again once already added.

    ✅ Improvements

    • [#338] Show confirmation dialog on note deletion and logout in Simple app.
    • [#339] Fixed Save note button hides behind the keyboard in note detail and add new note screen.
    • [#336] Improved touch region for icons in compose app.
    • [#336] Changed background colour at About Screen to match with the background colour at Note Detail Screen.
    • [#336] Improved style of text fields for notes in Compose app.

    🎯 Codebase Improvements

    • Replaced lifecycleScope.launch with viewLifecycleOwner.lifecycleScope.
    • Refactored Noty Dialogs's ConfirmationDialog to use Default AlertDialog composable instead of Default Dialog composable.

    Many Thanks to superstar ⭐ contributor @kasem-sm for contributing and for making this project better!

    Source code(tar.gz)
    Source code(zip)
    noty-android-compose.apk(18.77 MB)
    noty-android-simple.apk(8.23 MB)
  • v1.3.1(Nov 16, 2021)

    This release includes few improvements and fixes in the Jetpack Compose Application to make it better.

    🐛 Bug Fixes

    • [#281] Earlier, After signup, navigating back takes to log in screen. Now it closes the app.
    • [#282] Show proper cards with proper shadow in About screen. (Contributed by @yogeshpaliyal)
    • [#284] Removed focus (cursor) from fields while sharing image of a note. (Contributed by @yogeshpaliyal)
    • [#286] Improved dark mode visibility. (Contributed by @yogeshpaliyal)
    • [#294] Earlier, flickering (recompositions) were happening after performing navigation through screens.

    ✅ Improvements

    • [#280] Provided helper message for input fields like username and password for better UX in Login/Signup screens.
    • [#283] Improved touch region area of note input fields. (Contributed by @yogeshpaliyal)
    • [#287] Show confirmation dialog before deleting a note.
    • [#297] Show confirmation dialog before logging out.

    🎯 Codebase Improvements

    • Used decorationBox property of Composable TextField to show/hide placeholder instead of manually handling in a box.
    • Removed jcenter() from Gradle repositories (Contributed by @sairajsawant)

    Many Thanks to superstar ⭐ contributors @yogeshpaliyal, @sairajsawant for contributing PRs and @kasem-sm for raising issues

    Source code(tar.gz)
    Source code(zip)
    noty-android-compose.apk(18.70 MB)
    noty-android-simple.apk(8.15 MB)
  • v1.3.0(Oct 24, 2021)

    This release includes a new feature and some fixes in the Jetpack Compose Application.

    🔮 What's New?

    • [#119] Added support in the Jetpack Compose app to Share note as an Image (Contributed by @ch8n).

    ✅ Bug Fixes / Improvements

    • Fixed saving/syncing note information

    🎯 Codebase Improvements

    • Extracted out common used utility code of composeapp and simpleapp into a common utility functions.
    • Created a common @Composable component Capturable for capturing composable component in the form of a Bitmap.
    • Updated Jetpack Compose to 1.0.4 and Kotlin version to 1.5.31.

    Many Thanks to superstar ⭐ contributor @ch8n for the PR

    Source code(tar.gz)
    Source code(zip)
    noty-android-compose.apk(18.66 MB)
    noty-android-simple.apk(8.13 MB)
  • v1.2.0(Aug 30, 2021)

    This release includes User experience improvements in the Jetpack Compose Application. Minor fixes in Simple app.

    🔮 What's New?

    • [#209] Added connectivity indicator in compose app.

    ✅ Bug Fixes / Improvements

    • [#202] Fixed continuous flickering issue after Signup/Login in compose app.
    • [#203] Avoided/Fixed re-syncing of notes after configuration changes in compose app.

    🎯 Codebase Improvements

    • [#201] Optimized APK size by enabling R8.
    • [#206] Fixed memory leak of mAdapter in simple app.
    • Set flag android:exported="true" for Activity to support Android 12 and above.
    • Provide content padding to LazyColumn (to achieve same behavior as clipToPadding in RecyclerView).
    • Cleaned up code.
    Source code(tar.gz)
    Source code(zip)
    noty-android-compose.apk(18.61 MB)
    noty-android-simple.apk(8.10 MB)
  • v1.1.0(Aug 6, 2021)

    This release includes User experience improvements in the Jetpack Compose Application. No change in simple app.

    🔮 What's New?

    • [#117] Added screen: About for the details regarding application.
    • [#118] Added Swipe to refresh support in Notes screen to re-load the notes.

    ✅ Bug Fixes / Improvements

    All below fixes and improvements are done in the Compose application.

    • [#117] Clear all previous screens from backstack after successful login/signup.
    • [#117] Added validation for input text fields in Login and Signup screen.
    • [#120] Fix Background of Login screen in Dark mode (Earlier, it's not supporting dark theme well)
    • [#151] Added transition while navigating through the screens.
    • [#196] Avoid re-syncing notes every time whenever notes screen is launched (after returning to notes screen from other screens like About or note details).
    • [#197] Improved UI/UX of the input Text fields throughout the application.
    • Fix: Back button pressed in note details screen creates new Notes screen instead of going back.

    🎯 Codebase Improvements

    • [#117] Create re-usable Composable components to reduce the repetitive code.
    • Using the stable release of Jetpack Compose 1.0.1 with Kotlin 1.5.21.
    • Renamed color components of theme.
    • Use Hilt Compose navigation.
    • Cleaned up code, refactored classes and composable methods.
    Source code(tar.gz)
    Source code(zip)
    noty-android-compose.apk(18.60 MB)
    noty-android-simple.apk(7.94 MB)
  • v1.0.0(Feb 7, 2021)

    This release includes major changes and improvements.

    🔮 What's New?

    • [#15] Implemented App UI with Jetpack Compose UI toolkit.

    ✅ Bug Fixes / Improvements

    • Fix crash when pressed back from Note details.

    🎯 Codebase Improvements

    • [#15] Added module for Jetpack Compose implementation: :app:composeapp.
    • Migrated to the latest version of Dagger 2.31.2.
    • Use Hilt Assisted Injection for ViewModel and WorkManager.
    Source code(tar.gz)
    Source code(zip)
    noty-android-compose.apk(15.58 MB)
    noty-android-simple.apk(7.44 MB)
  • v0.1.1(Dec 6, 2020)

    This release includes some minor fixes and improvements.

    🔮 What's New?

    • [#88] Added menu for sharing note content as Image to external apps. Now there're be two sub-menus for sharing menu i.e. 'Share as Text' and 'Share as Image'
    • [#92] Added dialogs for showing loading progress or errors for better understanding with interactive animations.

    ✅ Bug Fixes / Improvements

    • [#90] Username field was earlier taking multi-line inputs. This has been fixed and it only takes single-line input.

    🎯 Codebase Improvements

    • [#81] Migrated from LiveData to Flow in ViewModels. This has been implemented so that we can effectively manage states in future when integrated with Jetpack Compose UI.
    Source code(tar.gz)
    Source code(zip)
    noty-android-compose.apk(7.53 MB)
    noty-android-simple.apk(7.38 MB)
  • v0.1.0(Nov 29, 2020)

  • v0.0.2(Nov 7, 2020)

    This release includes some fixes and improvements

    🔮 What's New?

    • [#54] Added About screen in the application with app details.

    ✅ Bug Fixes / Improvements

    • [#59] Layout of Login and Register was lying above the status bar.
    • [#56] Note content layout in Add/details was not smooth to handle. Now it's flexible with smooth Scroll-ability.
    • [#53] Shared message (When sharing note to external apps) content was not valid.
    Source code(tar.gz)
    Source code(zip)
    noty-android-compose.apk(4.61 MB)
    noty-android-simple.apk(5.60 MB)
  • v0.0.1(Oct 29, 2020)

Owner
Shreyas Patil
👨‍🎓 IT Undergrad 📱 Mobile App Developer ❤️Android 🌎Web Developer ⚙️Open Source Enthusiast 👨‍💻Organizer @KotlinMumbai
Shreyas Patil
AudioNotes 📙 An open source simple audio note taking app built to demonstrate android development best practices.

AudioNotes ?? A simple open source audio note-taking ?? Android application built to describe the use of Modern Android development tools. ?? . Made w

Samson Achiaga 47 Dec 15, 2022
A Simple and Minimal Quotes Android Application to demonstrate the Modern Android Development tools

Quotee Android ?? A Simple and Minimal Quotes Android Application to demonstrate the Modern Android Development tools. Developed with ❤️ by Aminullah

null 12 Aug 24, 2022
Taskify - An app to manage your daily tasks and boost your productivity. Taskify is built using kotlin and follows all modern android Development practices and hence is a good learning resource for beginners

Taskify Taskify is an app to manage your daily tasks and boost your productivity Video Introduction ?? This is a small introduction video about Taskif

Vaibhav Jaiswal 101 Jan 4, 2023
The JeTrivia is built on a modern Android Development tech stack with MVVM architecture. Kotlin, Coroutine, Flow, StateFlow, Jetpack Compose, Navigation, Room, Hilt, Retrofit2, OkHttp3, kotlinx.serialization, MockK, Truth

JeTrivia ?? In Progress ?? The JeTrivia application is sample based on MVVM architecture. Fetching data from the network via repository pattern and sa

Tolga Bolatcan 5 Mar 31, 2022
Vaibhav Jaiswal 57 Jan 3, 2023
The Rick And Morty - MVVM with a clean architecture approach using some of the best practices in Android Development.

Rick-and-Morty The Rick And Morty - App consuming a Rick and Morty API to display Characters it has been built with clean architecture principles, Rep

Akhilesh Patil 61 Jan 7, 2023
A full-stack application showing the power 💪 of KOTLIN. Entire android app + backend Apis written in Kotlin 🔥

Gamebaaz ?? A full-stack application showing the power ?? of KOTLIN. Entire android app + backend Apis written in Kotlin ?? Android Backend Jetpack Co

Sarnava Konar 85 Nov 17, 2022
A complete app that demonstrate how to build an Android application using the Uncle Bob's Clean Architecture approach

?? Blog taking application utilizing Ktor REST-API and following modern practices: Kotlin, Coroutines, Flows, Channels, Room, Work Manager, Navigation Component, MVI, Clean Architecture, Modularization, Dagger Hilt, Tests...

Haythem Mejerbi 47 Dec 17, 2022
🛒A Minimal Expense E-Commerce App built to demonstrate the use of modern android architecture components [Navigation, Room, MotionLayout, etc..] with MVVM Architecture. ✔

E-Store A Simple E-Commerce App ?? built to demonstrate the use of modern android architecture component with MVVM Architecture ?? . Made with love ❤️

Ameen Essa 14 Nov 3, 2022
A Simple Expense Tracker App 📱 built to demonstrate the use of modern android architecture component with MVVM Architecture

Expenso ?? A Simple Expense Tracker App ?? built to demonstrate the use of modern android architecture component with MVVM Architecture ?? . Made with

Michel Horacio 1 Dec 28, 2022
🎥 A Simple and Minimal Movies Android Application to demonstrate the Modern Android Development and Jetpack Compose.

ComposeMovie Android ?? A Simple and Minimal Movies Android Application to demonstrate the Modern Android Development and Jetpack Compose. Built with

null 13 Oct 1, 2022
An advanced Kotlin (Android Native) application that uses SOLID architectural principles, consumes a RESTFUL Service, downloads & images using best practices

Dog-Playground Kotlin An advanced Kotlin (Android Native) application that uses SOLID architectural principles, consumes a RESTFUL Service, downloads

Amose Suwali 1 Jan 10, 2022
A simple Android project using modern Android development tools and libraries.

A simple Android project using modern Android development tools and libraries.

Ahmed Sumeiry 0 Feb 3, 2022
📚 Sample Android Components Architecture on a modular word focused on the scalability, testability and maintainability written in Kotlin, following best practices using Jetpack.

Android Components Architecture in a Modular Word Android Components Architecture in a Modular Word is a sample project that presents modern, 2020 app

Madalin Valceleanu 2.3k Jan 3, 2023
🚀 Sample Android Clean Architecture on Rorty App focused on the scalability, testability and maintainability written in Kotlin, following best practices using Jetpack.

Android Clean Architecture Android Clean Architecture in Rorty is a sample project that presents modern, approach to Android application development u

Mr.Sanchez 0 Dec 28, 2021
:movie_camera: Movie discovery app showcasing Android best practices with Google's recommended architecture: MVVM + Repository + Offline support + Android Architecture Components + Paging library & Retrofit2.

Popular Movies Stage 1 + Stage 2 Discover the most popular and top rated movies playing. Movies data fetched using themoviedb.org API. ✨ Screenshots M

Yassin AJDI 189 Nov 26, 2022
NoteApp - A note taking app illustrating Android best practices with Jetpack Compose.

NoteApp - A note taking app illustrating Android best practices with Jetpack Compose.

Ömer Karaca 23 Dec 20, 2022
Samples showing best practices for MIDI on Android.

MIDI Samples This repository contains a set of individual Android Studio projects to help you write apps using MIDI APIs. Android MIDI 2.0 API samples

Android 23 Dec 19, 2022
Implementation of the application using the latest Android Tech Stack and the GitHub REST API.

GitHub Viewer Implementation of the application using the latest Android Tech Stack and the GitHub REST API. <!-- Github login. You can change the use

Vitaliy Zarubin 53 Jan 3, 2023