Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Remove Gson & switch to Kotlinx.serialization for serializing backup files #158

Merged
merged 1 commit into from
Sep 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# These are supported funding model platforms

github: [starry-shivam]
github: [ starry-shivam ]
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/--bug-report.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: "\U0001F41E Bug report"
description: Create a report to help us improve.
title: "[Bug]: "
labels: ["\U0001F41E bug"]
labels: [ "\U0001F41E bug" ]
body:
- type: markdown
attributes:
Expand Down
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/--feature-request.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Feature Request
description: Suggest a new feature or an UI/UX enhancements.
title: "[Feature Request]"
labels: [enhancement]
labels: [ enhancement ]
body:
- type: checkboxes
id: checklist
Expand All @@ -14,7 +14,7 @@ body:
required: true
- label: I checked, but didn't find any duplicates (open OR closed) of this issue in the repo.
required: true
- label: This feature is merely an UI/UX update.
- label: This feature is merely an UI/UX update.
required: false
- label: This feature is not going to conflict with many of the existing features/options.
required: true
Expand Down
14 changes: 11 additions & 3 deletions .github/PULL_REQUEST_TEMPLATE/general_template.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,28 @@
### Description

<!-- Please include a summary of the changes and the related issue. Please also include relevant motivation and context. List any dependencies that are required for this change. -->

### Related Issue

<!--- This project only accepts pull requests related to open issues -->
<!--- If suggesting a new feature or change, please discuss it in an issue first -->
<!--- If fixing a bug, there should be an issue describing it with steps to reproduce -->
<!--- Please link to the issue here: -->

## Type of change
## Type of change

<!--- Is this a bug fix, adding a feature... -->

### Pull Request checklist

<!-- Before submitting the PR, please address each item. Use [x] to check the boxes -->

- [ ] The commit message uses the [conventional commiting method][conv-commits].
- [ ] Made sure that your PR is not duplicate
- [ ] **Tests**: This PR includes thorough tests or an explanation of why it does not (for bug fixes/features). Your PR should pass all CI checks in our Gtihub Actions [Workflow](https://github.com/Pool-Of-Tears/GreenStash/actions)
- [ ] **Screenshots**: This PR includes screenshots or GIFs of the changes made or an explanation of why it does not (*optional*)
- [ ] **Tests**: This PR includes thorough tests or an explanation of why it does not (for bug
fixes/features). Your PR should pass all CI checks in our Gtihub
Actions [Workflow](https://github.com/Pool-Of-Tears/GreenStash/actions)
- [ ] **Screenshots**: This PR includes screenshots or GIFs of the changes made or an explanation of
why it does not (*optional*)

[conv-commits]:https://kapeli.com/cheat_sheets/Conventional_Commits.docset/Contents/Resources/Documents/index
1 change: 1 addition & 0 deletions .github/PULL_REQUEST_TEMPLATE/translations_template.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
### Tanslation language

<!--- add your translation locale here -->

### Translation checklist
Expand Down
7 changes: 5 additions & 2 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
Please go the the `Preview` tab and select the appropriate sub-template:
- [General PR](?expand=1&template=general_template.md): for all other PRs, including bug fixes, adding features etc.
- [Translation PR](?expand=1&template=translations_template.md): specifically to be used for translation PRs

- [General PR](?expand=1&template=general_template.md): for all other PRs, including bug fixes,
adding features etc.
- [Translation PR](?expand=1&template=translations_template.md): specifically to be used for
translation PRs
22 changes: 11 additions & 11 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
- uses: actions/checkout@v3
- name: set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: gradle

- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ on:
push:
tags:
- 'v*'

jobs:
Build:
name: Build/Sign APK
Expand All @@ -17,7 +17,7 @@ jobs:
BUILD_TOOL_VERSION=$(ls /usr/local/lib/android/sdk/build-tools/ | tail -n 1)
echo "BUILD_TOOL_VERSION=$BUILD_TOOL_VERSION" >> $GITHUB_ENV
echo Last build tool version is: $BUILD_TOOL_VERSION

- name: set up JDK 17
uses: actions/setup-java@v3
with:
Expand Down Expand Up @@ -65,7 +65,7 @@ jobs:
keyPassword: ${{ secrets.KEY_PASSWORD }}
env:
BUILD_TOOLS_VERSION: ${{ env.BUILD_TOOL_VERSION }}

- name: Make artifact
uses: actions/upload-artifact@v2
with:
Expand Down
2 changes: 1 addition & 1 deletion .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

54 changes: 40 additions & 14 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,67 @@
# Contributing

For bug reports and feature requests, please search in issues first (including the closed ones). If there are no duplicates, feel free to [submit an issue][issues] with an issue template.
For bug reports and feature requests, please search in issues first (including the closed ones). If
there are no duplicates, feel free to [submit an issue][issues] with an issue template.

**We'll probably ignore and close your issue if it's not using the existing templates or doesn't contain sufficient description.**
**We'll probably ignore and close your issue if it's not using the existing templates or doesn't
contain sufficient description.**

## Bug Report

When submitting a bug report, please make sure your issue contains **enough** information for reproducing the problem, including the options or the custom command being used, the link to the video, and other fields in the issue template.
When submitting a bug report, please make sure your issue contains **enough** information for
reproducing the problem, including the options or the custom command being used, the link to the
video, and other fields in the issue template.

## Feature Request

**GreenStash** is designed to provide users with a straightforward and effective tool for managing their finances on Android. Our focus is to offer essential budgeting functionalities in an intuitive interface, helping users track their savings effortlessly. As such, we prioritize feature requests that align with our core mission and the fundamental principles of budget management.
**GreenStash** is designed to provide users with a straightforward and effective tool for managing
their finances on Android. Our focus is to offer essential budgeting functionalities in an intuitive
interface, helping users track their savings effortlessly. As such, we prioritize feature requests
that align with our core mission and the fundamental principles of budget management.

Our app already includes a range of features designed to assist users in budgeting effectively, such as goal setting and customizable categories. While we are open to suggestions for improvements and enhancements, we may not be able to accommodate requests for features that deviate significantly from our app's primary purpose or that are beyond the scope of traditional budget management. Therefore, we kindly ask our users to consider the app's intended functionality and limitations when submitting feature requests.
Our app already includes a range of features designed to assist users in budgeting effectively, such
as goal setting and customizable categories. While we are open to suggestions for improvements and
enhancements, we may not be able to accommodate requests for features that deviate significantly
from our app's primary purpose or that are beyond the scope of traditional budget management.
Therefore, we kindly ask our users to consider the app's intended functionality and limitations when
submitting feature requests.

We appreciate the feedback and input from our users, and we are committed to continually improving **GreenStash** to meet the evolving needs of our user base. However, please understand that not all feature requests may be feasible or aligned with our app's mission and vision.
We appreciate the feedback and input from our users, and we are committed to continually improving *
*GreenStash** to meet the evolving needs of our user base. However, please understand that not all
feature requests may be feasible or aligned with our app's mission and vision.

If you'd like to request a feature you deem necessary and useful, open a new Github issue with the Feature-Request template [here][feature-req].
If you'd like to request a feature you deem necessary and useful, open a new Github issue with the
Feature-Request template [here][feature-req].

## Pull Request

If you wish to contribute to the project by submitting code directly, please first leave a comment under the relevant issue or file a new issue, describe the changes you are about to make.
If you wish to contribute to the project by submitting code directly, please first leave a comment
under the relevant issue or file a new issue, describe the changes you are about to make.

As per our project's guidelines, we adhere to [conventional commits][conv-commits]. Therefore, it's expected that all PRs align with this convention. Should a PR not meet these standards, we'll kindly request a review and revision.
As per our project's guidelines, we adhere to [conventional commits][conv-commits]. Therefore, it's
expected that all PRs align with this convention. Should a PR not meet these standards, we'll kindly
request a review and revision.

Please use the provided Pull Request templates according to your needs. Currently, there are two to choose from:
- [General PR](.github/PULL_REQUEST_TEMPLATE/general_template.md): for all other PRs, including bug fixes, adding features etc.
- [Translation PR](.github/PULL_REQUEST_TEMPLATE/translations_template.md): specifically to be used for translation PRs
Please use the provided Pull Request templates according to your needs. Currently, there are two to
choose from:

- [General PR](.github/PULL_REQUEST_TEMPLATE/general_template.md): for all other PRs, including bug
fixes, adding features etc.
- [Translation PR](.github/PULL_REQUEST_TEMPLATE/translations_template.md): specifically to be used
for translation PRs

> [!TIP]
>
> To avoid multiple pull requests resolving the same issue, let others know you are working on it by saying so in a comment, or ask the issue to be assigned to yourself.
> To avoid multiple pull requests resolving the same issue, let others know you are working on it by
> saying so in a comment, or ask the issue to be assigned to yourself.

## Building From Source

Fork this project, import and compile it with the latest version of [Android Studio](https://developer.android.com/studio/).
Fork this project, import and compile it with the latest version
of [Android Studio](https://developer.android.com/studio/).

[issues]: https://github.com/Pool-Of-Tears/GreenStash/issues/new/choose

[feature-req]: https://github.com/Pool-Of-Tears/GreenStash/issues/new?assignees=&labels=enhancement&projects=&template=--feature-request.yml&title=%5BFeature+Request%5D

[conv-commits]:https://kapeli.com/cheat_sheets/Conventional_Commits.docset/Contents/Resources/Documents/index
76 changes: 52 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@

------

**GreenStash** is a simple [FOSS](https://en.m.wikipedia.org/wiki/Free_and_open-source_software) android app to help you plan and manage your savings goals easily and establish the habit of saving money.
**GreenStash** is a simple [FOSS](https://en.m.wikipedia.org/wiki/Free_and_open-source_software)
android app to help you plan and manage your savings goals easily and establish the habit of saving
money.

------

Expand All @@ -32,17 +34,20 @@

<h2 align="center">Highlights</h2>

- Clean & beautiful UI based on Google's [material design three](https://m3.material.io/) guidelines.
- Clean & beautiful UI based on Google's [material design three](https://m3.material.io/)
guidelines.
- Add images to your saving goals to keep you motivated!
- View how much you need to save daily/weekly/monthly to achieve your goal before deadline.
- View detailed transaction (withdraw/deposit) history.
- Get daily, semi-weekly or weekly reminders for your saving goals based on goal priority.
- Get daily, semi-weekly or weekly reminders for your saving goals based on goal priority.
- Supports around 100+ local currency symbols.
- Inbuilt biometric app lock to keep your financial data safe and secure.
- Fully offline, greenstash doens't require internet permission to work.
- Compatible with Android 7.0 and above (API 24+)
- Supports [Material You](https://www.androidpolice.com/everything-we-love-about-material-you/amp/) theming in devices running on Android 12+
- MAD: UI and logic written with pure Kotlin. Single activity, no fragments, only composable destinations.
- Supports [Material You](https://www.androidpolice.com/everything-we-love-about-material-you/amp/)
theming in devices running on Android 12+
- MAD: UI and logic written with pure Kotlin. Single activity, no fragments, only composable
destinations.

------

Expand All @@ -60,46 +65,68 @@
<h2 align="center">Donations</h2>

GreenStash doesn't contain any ads and doesn't sell your data.
The development of the app is financed by individual user contributions, such as you purchasing the app via Google Play or becoming a sponsor on Github ❤️
The development of the app is financed by individual user contributions, such as you purchasing the
app via Google Play or becoming a sponsor on Github ❤️

Become a [Sponsor](https://github.com/sponsors/starry-shivam) on Github | Purchase it on [Google Play](https://play.google.com/store/apps/details?id=com.starry.greenstash)
Become a [Sponsor](https://github.com/sponsors/starry-shivam) on Github | Purchase it
on [Google Play](https://play.google.com/store/apps/details?id=com.starry.greenstash)

------

<h2 align="center">Contributions</h2>

Contributions are welcome!
Contributions are welcome!

>[!Note]
> [!Note]
>
>For submitting bug reports, feature requests, questions, or any other ideas to improve, please read [CONTRIBUTING.md](/CONTRIBUTING.md) for instructions and guidelines first.
>For submitting bug reports, feature requests, questions, or any other ideas to improve, please
> read [CONTRIBUTING.md](/CONTRIBUTING.md) for instructions and guidelines first.

------

<h2 align="center">Translations</h2>

If you want to make the app available in your language, you're welcome to create a pull request with your translation file. The base string resources can be found under:
If you want to make the app available in your language, you're welcome to create a pull request with
your translation file. The base string resources can be found under:

```
/app/src/main/res/values/strings.xml
```
It is easiest to make a translation using the Android Studio XML editor, but you can always use your favorite XML text editor instead. Check out this guide to learn more about translation strings from [Helpshift](https://developers.helpshift.com/android/i18n/) for Android.

It is easiest to make a translation using the Android Studio XML editor, but you can always use your
favorite XML text editor instead. Check out this guide to learn more about translation strings
from [Helpshift](https://developers.helpshift.com/android/i18n/) for Android.

------

<h2 align="center">Tech Stack</h2>

- [Kotlin](https://kotlinlang.org/) - First class and official programming language for Android development.
- [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html) - To improve performance by doing I/O tasks out of main thread asynchronously.
- [Flow](https://kotlinlang.org/api/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.
- [Android Architecture Components](https://developer.android.com/topic/libraries/architecture) - Collection of libraries that help you design robust, testable, and maintainable apps.
- [Jetpack Compose](https://developer.android.com/jetpack/compose?gclsrc=ds&gclsrc=ds) - Jetpack Compose is Android’s recommended modern toolkit for building native UI
- [LiveData](https://developer.android.com/topic/libraries/architecture/livedata) - Data objects that notify views when the underlying database changes.
- [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) - Stores UI-related data that isn't destroyed on UI changes.
- [Lottie](https://airbnb.design/lottie) - Lottie is an Android, iOS and React Native library that renders After Effects animations in real time.
- [Coil](https://coil-kt.github.io/coil/compose) - An image loading library for Android backed by Kotlin Coroutines.
- [Gson](https://github.com/google/gson) - A Java serialization/deserialization library to convert Java Objects into JSON and back.
- [Dagger-Hilt](https://dagger.dev/hilt) For [Dependency injection (DI)](https://developer.android.com/training/dependency-injection)
- [Room database](https://developer.android.com/jetpack/androidx/releases/room) - Persistence library provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.
- [Kotlin](https://kotlinlang.org/) - First class and official programming language for Android
development.
- [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html) - To improve
performance by doing I/O tasks out of main thread asynchronously.
- [Flow](https://kotlinlang.org/api/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.
- [Android Architecture Components](https://developer.android.com/topic/libraries/architecture) -
Collection of libraries that help you design robust, testable, and maintainable apps.
- [Jetpack Compose](https://developer.android.com/jetpack/compose?gclsrc=ds&gclsrc=ds) - Jetpack
Compose is Android’s recommended modern toolkit for building native UI
- [LiveData](https://developer.android.com/topic/libraries/architecture/livedata) - Data objects
that notify views when the underlying database changes.
- [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) - Stores
UI-related data that isn't destroyed on UI changes.
- [Lottie](https://airbnb.design/lottie) - Lottie is an Android, iOS and React Native library that
renders After Effects animations in real time.
- [Coil](https://coil-kt.github.io/coil/compose) - An image loading library for Android backed by
Kotlin Coroutines.
- [Kotlinx.serialization](https://kotlinlang.org/docs/serialization.html) - Provides sets of
libraries for various serialization formats – JSON, CBOR, protocol buffers, and others.
- [Dagger-Hilt](https://dagger.dev/hilt)
For [Dependency injection (DI)](https://developer.android.com/training/dependency-injection)
- [Room database](https://developer.android.com/jetpack/androidx/releases/room) - Persistence
library provides an abstraction layer over SQLite to allow for more robust database access while
harnessing the full power of SQLite.

------

Expand All @@ -114,6 +141,7 @@ It is easiest to make a translation using the Android Studio XML editor, but you
[MIT License][license] © [Stɑrry Shivɑm][github]

[license]: /LICENSE

[github]: https://github.com/starry-shivam

```
Expand Down
Loading
Loading