A simple note taking app in Android with Integrated API
NotesApp
This is a simple note taking app in Android with Integrated API. In this project have covered everything that is required to create a fully functional app.
Features
- MVVM Setup
- HILT
- Coroutines
- API Integration using Retrofit
- Interceptors for Authenticated Flows.
- Handling validations and loading state.
- Complete Signup/Login Flow
Screen Shots
Before starting project add the following steps :
Step 1) In build.gradle(Module):
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
}
android {
buildFeatures {
viewBinding true
}
kapt {
correctErrorTypes true
}
}
dependencies {
implementation 'com.google.dagger:hilt-android:2.42'
kapt 'com.google.dagger:hilt-compiler:2.42'
def lifecycle_version = "2.6.0-alpha01"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
def retrofit_version = "2.9.0"
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
def room_version = "2.4.2"
implementation "androidx.room:room-runtime:$room_version"
implementation "androidx.room:room-ktx:$room_version"
kapt "androidx.room:room-compiler:$room_version"
def coroutines_version = "1.6.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
def navigation_version = "2.5.0"
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
implementation "com.github.ybq:Android-SpinKit:$androidSpinkitVersion2"
}
Step 2) Android Mainfest.xml {
uses-permission android:name=”android.permission.INTERNET”
}
Step 3) replace this on build.gradle(Project):
ext {
androidSpinkitVersion = '1.4.0'
androidSpinkitVersion1 = androidSpinkitVersion
androidSpinkitVersion2 = androidSpinkitVersion1
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.2.1'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10'
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.42'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Step 4) Replace this on setting.gradle(project settings) :
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io'
}
}
}