Skip to content

Commit

Permalink
Fixed Screen UI and bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
rohitjakhar committed Aug 30, 2021
1 parent 0825978 commit 306c722
Show file tree
Hide file tree
Showing 23 changed files with 327 additions and 276 deletions.
68 changes: 54 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
![](media/QuizZon_Head.png)
![](media/home_design.png)

# **QuizZon**

Expand All @@ -14,7 +14,7 @@
Clone the repository on your machine. Open the project on your IDE and connect it to firebase and Auth0 and everything will be setup

- Add your firebase json class in app directory
- Add your Auth0 Credentital in
- Change Client id, domain name and scheme in string resources file.

## About

Expand All @@ -27,42 +27,82 @@ Clone the repository on your machine. Open the project on your IDE and connect i

## Features

-[Auth0 Login]() - Auth0 universal login
-[Biometric Lock]() - Use Biometric/Default Mobile lock
-[Day & Night]() - Day and Night Theme.
-[Add Transaction]() - Add Transaction.
-[Create Category]() - Create Category
-[Pie Chart]() - Pie Chart of Income and Expense data
-[Firestore Database]() - Firestore database for data
## Features:
- **Auth0 Login** :- Auth0 is used for login/signup in app.

- **Biometric Lock** :- For protecting your transaction in app we provide Fingerprint login/Pattern lock.

- **Light & Dark** :- Light and Dark theme is provided in app so both light theme lover and dark theme lover happy.

- **Add Transaction** :- Using simple step you can add your transaction.

- **Create Category** :- As we know everyone's transaction category so in Kuberam app you can create category as your need.

- **Pie Chart** :- Based on your income and expense transaction we show Pie Chart of Income Transaction and Expense Transaction so your can manage them.

- **Firestore Database** :- Kuberam used Firestore database for saving your all transaction online so you don't worry about backup.

- **Change Currency** :- As we know we are comes from different places and we use different currency for transactions, in Kuberam we provide different type currencies.

- **Delete Transaction** :- If you add transaction by mistakes or you don't want to track that transactions so we provide delete features also. For deleting transaction you need to swipe transaction from Left to End.

- ** In App Review** :- In App Review Library.
- ** In App Update** :- In this busy world we always forget about updating app when app have an updates, In Kuberam we use In App Update library so when app have any update it show an popup for update and you can update directly from that without opening playstore.

- ** Reminder Notification** :- We send an notification everyday for reminding to add transaction in app so you don't skip any day to add transactions.

## 📸 Screenshots

||||
|:----------------------------------------:|:-----------------------------------------:|:-----------------------------------------: |
| ![](media/1.png) | ![](media/2.png) | ![](media/3.png) |
| ![](media/4.png) | ![](media/5.png) | ![](media/6.png) |
| ![](media/7.png) | ![](media/8.png) | ![](media/9.png) |
|![](media/10.png) |![](media/11.png) |![](media/12.png) |
|![](media/13.png) |![](media/14.png) |![](media/15.png) |
| ![](media/light_login/1.png) | ![](media/light_dashboard.png) | ![](media/light_bottom_drawer.png) |
| ![](media/light_add_category.png) | ![](media/light_add_transaction.png) | ![](media/light_profile.png) |
| ![](media/dark_login.png) | ![](media/dark_dashboard_data.png) | ![](media/dark_drawer.png) |
|![](media/dark_category.png) |![](media/dark_add_transaction.png) |![](media/dark_profile) |

## Built With 🛠
- [Auth0](https://auth0.com/) - Auth0 is an easy to implement, adaptable authentication and authorization platform.

- [Jetpack Compose](https://developer.android.com/jetpack/compose) - Jetpack Compose is Android’s modern toolkit for building native UI.

- [Kotlin](https://kotlinlang.org/) - First class and official programming language for Android development.

- [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html) - For asynchronous and more..

- [Flow](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/) - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.

- [MutableState](https://developer.android.com/jetpack/compose/state) - MutableState is an alternative to using LiveData or Flow . Compose does not observe any changes to this object by default and therefore no recomposition will happen.

- [Android Architecture Components](https://developer.android.com/topic/libraries/architecture) - Collection of libraries that help you design robust, testable, and maintainable apps.

- [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) - Stores UI-related data that isn't destroyed on UI changes.

- [DataStore](https://developer.android.com/topic/libraries/architecture/datastore) - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers.

- [Dependency Injection](https://developer.android.com/training/dependency-injection) -
- [Hilt-Dagger](https://dagger.dev/hilt/) - Standard library to incorporate Dagger dependency injection into an Android application.

- [Hilt-ViewModel](https://developer.android.com/training/dependency-injection/hilt-jetpack) - DI for injecting `ViewModel`.

- [Firebase](https://firebase.google.com)
- Firebase Firestore - To save data in firebase firestore database
- Firebase Crashlytics - To report app crashes
- Firebase Analytics - To report app crashes
- Firebase Messaging - To send Notifications in app.

- [Material Components for Android](https://github.com/material-components/material-components-android) - Modular and customizable Material Design UI components for Android.

- [Compose Chart](https://github.com/humawork/compose-charts) - Showing Pie Chart in Jetpack Compose.

-[Coil](https://coil-kt.github.io/coil/compose/) - An image loading library for Android backed by Kotlin Coroutines.

- [Bio-metric Authentication](https://developer.android.com/training/sign-in/biometric-auth) - Authentication using a screen lock credential – the user's PIN, pattern, or password.

- [Accompanist Pager](https://google.github.io/accompanist/pager/) - A library which provides paging layouts for Jetpack Compose.

- [Accompanist Navigation](https://google.github.io/accompanist/navigation-animation/) - A library which provides Compose Animation support for Jetpack Navigation Compose.

- [Lottie](https://github.com/airbnb/lottie-android) - Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with Bodymovin and renders them natively on mobile!
# Package Structure

com.kuberam.android # Root Package
Expand Down
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ android {
applicationId "com.kuberam.android"
minSdk 21
targetSdk 31
versionCode 5
versionName "1.1.1"
versionCode 6
versionName "2.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
Expand Down
Binary file modified app/release/app-release.apk
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.shape.ZeroCornerSize
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
Expand Down Expand Up @@ -55,16 +56,16 @@ fun CustomTopSection(
Surface(
color = cardBackground(isDarkTheme.value),
modifier = Modifier.wrapContentHeight().fillMaxWidth()
.padding(bottom = 16.dp),
.padding(bottom = 8.dp),
shape = RoundedCornerShape(16.dp).copy(
topStart = ZeroCornerSize,
topEnd = ZeroCornerSize
)
) {
Column(
Modifier.padding(
bottom = 16.dp,
top = 16.dp,
bottom = 8.dp,
top = 8.dp,
start = 16.dp,
end = 16.dp
).fillMaxWidth()
Expand Down Expand Up @@ -94,14 +95,14 @@ fun CustomTopSection(

Text(
"Income: ${userProfile.value.totalIncome}${currentCurrency.value}",
style = Typography.h2,
style = MaterialTheme.typography.h2,
modifier = Modifier.padding(8.dp),
color = textNormalColor(isDarkTheme.value)
)

Text(
"Expense: ${userProfile.value.totalExpense}${currentCurrency.value}",
style = Typography.h2,
style = MaterialTheme.typography.h2,
modifier = Modifier.padding(8.dp),
color = textNormalColor(isDarkTheme.value)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ fun MyBottomDrawer(
) {
Column {
CustomTopSection(viewModel)
Spacer(Modifier.padding(top = 16.dp))
Spacer(Modifier.padding(top = 8.dp))
val incomeChartList = arrayListOf<PieChartEntry>()
val expenseChartList = arrayListOf<PieChartEntry>()
incomeCategoryState.value.forEach {
Expand Down Expand Up @@ -248,7 +248,7 @@ fun MyBottomDrawer(
Alignment.CenterHorizontally
).padding(16.dp),
)
Spacer(Modifier.padding(top = 16.dp))
Spacer(Modifier.padding(top = 8.dp))
Row(
horizontalArrangement = Arrangement.SpaceBetween,
modifier = Modifier.fillMaxWidth().padding(start = 6.dp, end = 6.dp)
Expand All @@ -267,7 +267,6 @@ fun MyBottomDrawer(
color = textNormalColor(isDarkTheme.value)
)
}

TransactionList(viewModel)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,13 @@ fun OnBoardBottomSection(
Text("Start")
}
)
} else {
HorizontalPagerIndicator(
pagerState = state,
modifier = Modifier.align(Alignment.Center),
indicatorHeight = 10.dp,
indicatorWidth = 28.dp
)
}

HorizontalPagerIndicator(
pagerState = state,
modifier = Modifier.align(Alignment.Center),
indicatorHeight = 10.dp,
indicatorWidth = 28.dp
)
}
}
7 changes: 5 additions & 2 deletions app/src/main/java/com/kuberam/android/component/PieChart.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import com.airbnb.lottie.compose.LottieConstants
import com.airbnb.lottie.compose.rememberLottieComposition
import com.kuberam.android.R
import com.kuberam.android.utils.CustomVerticalLegend
import hu.ma.charts.legend.data.LegendPosition
import hu.ma.charts.pie.PieChart
import hu.ma.charts.pie.data.PieChartData
import hu.ma.charts.pie.data.PieChartEntry
Expand All @@ -31,7 +32,7 @@ fun SinglePieChart(pieChartData: List<PieChartEntry>, title: String) {
ChartContainer(
modifier = Modifier
.fillMaxWidth()
.height(350.dp)
.height(200.dp)
.padding(horizontal = 16.dp)
.border(
BorderStroke(1.dp, MaterialTheme.colors.secondaryVariant),
Expand All @@ -52,7 +53,9 @@ fun SinglePieChart(pieChartData: List<PieChartEntry>, title: String) {
} else {
PieChart(
data = PieChartData(
entries = pieChartData
entries = pieChartData,
legendPosition = LegendPosition.Start,

),
legend = { entries ->
CustomVerticalLegend(entries = entries)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class DataStorePreferenceStorage @Inject constructor(

override val isDarkTheme: Flow<Boolean>
get() = dataStore.data.map {
it[PREF_DARK_THEME] ?: false
it[PREF_DARK_THEME] ?: true
}

override val userProfileData: Flow<ProfileDataModel>
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/com/kuberam/android/ui/theme/Type.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ val Typography = Typography(
h1 = TextStyle(
fontFamily = Amiko,
fontWeight = FontWeight.Bold,
fontSize = 32.sp
fontSize = 24.sp
),
h2 = TextStyle(
fontFamily = Amiko,
fontWeight = FontWeight.SemiBold,
fontSize = 24.sp
fontSize = 18.sp
),
h3 = TextStyle(
fontFamily = Amiko,
Expand Down
Loading

0 comments on commit 306c722

Please sign in to comment.