Git Product home page Git Product logo

ivy-apps / ivy-wallet Goto Github PK

View Code? Open in Web Editor NEW
2.6K 24.0 592.0 18.37 MB

Ivy Wallet is an open-source money manager app for android that you can either build or download from Google Play.

Home Page: https://play.google.com/store/apps/details?id=com.ivy.wallet

License: GNU General Public License v3.0

Kotlin 99.73% Ruby 0.06% Shell 0.21%
kotlin jetpack-compose money-manager android ui-ux functional-programming functional-reactive-programming hilt-android reactive-programming room-database

ivy-wallet's Introduction

Latest Release APK Telegram Group

License: GPL v3 PRs welcome! GitHub Repo stars Fork Ivy Wallet

1 2 3 4
5 6 7 8

Ivy Wallet is a free and open source money management android app. It's written using 100% Kotlin and Jetpack Compose. It's designed to help you keep track of your personal finances with ease.

Think of Ivy Wallet as a manual expense tracker that tries to replace the good old spreadsheet for managing your finances.

Do you know? Ask yourself.

  1. How much money do I have in total?

  2. How much did I spend this month and what did I spend it on?

  3. How much can I spend and still meet my financial goals?

A money management app can help you answer these questions.

Ivy Wallet may lack some of the features you're looking for, but it truly shines in its user interface and experience, as well as its simplicity and customization options. This was recognized in the "Top/Best Android App in 2021/2022 charts" by the YouTube tech community.

Get it on Google Play

Join our private Telegram Community.

To support our free open source project, please give it a star. ⭐ This means a lot to us. Thank you so much! GitHub Repo stars

Project Requirements

Initialize the project

1. Fork and clone the repo

Instructions in CONTRIBUTING.md.

Need help?

Join our Telegram community and drop a message in the "Development" topic.

Telegram Group

Learning Materials

Ivy Wallet is a great place to code and learn. That's why we also link to great learning materials (books, articles, videos), check them out in docs/resources πŸ“š.

Make sure to check out our short Developer Guidelines πŸ—οΈ to learn more about the technical side of the Ivy Wallet.

PRs welcome!

Tech Stack

Core

Testing

  • JUnit4 (test framework, compatible with Android)
  • Kotest (unit test assertions)
  • Paparazzi (screenshot testing)

Local Persistence

Networking

Build & CI

Other

Contribute

Want to contribute? See CONTRIBUTING.md Fork Ivy Wallet

Contributors Wall:

contributors graph

Note: It may take up to 24 hours for the contrib.rocks plugin to update.

P.S. You'll also be recognized in a special "Contributors" section. We salute you! πŸ‘

Creative Contributors

Folks that helped Ivy Wallet in a non-dev creative ways that can't be captured on GitHub.

Creative Contributors Wall:

Stefan Ilijev - Desinger
Stefan Ilijev
Co-founder and designer of Ivy Wallet. Created the Ivy design system.

Community Projects

⚠️ Disclaimer: The community projects listed are independently developed and not affiliated with Ivy Apps Ltd. Consequently, we cannot vouch for their functionality, security or intentions. Your engagement with these projects is solely at your own discretion and risk. Ivy Apps Ltd explicitly disclaims any warranties, express or implied, and shall not be held liable for any damages or losses resulting from the use of these community-developed projects.

This community-developed project allows users to conveniently access Ivy Wallet through their web browsers, ensuring a smooth experience across multiple platforms.

ivy-wallet's People

Contributors

akashs056 avatar beradeep avatar code-a1 avatar dependabot[bot] avatar diasmashikov avatar dubeyanant avatar github-actions[bot] avatar govindkrishnan avatar iliyangermanov avatar isaacnguyen0809 avatar jevo160296 avatar luispacheco-dev avatar madhavbhavsar avatar mahmoodharis88 avatar maratkhakim avatar mhss1 avatar michalguspiel avatar nicolegeorgieva avatar nvllz avatar pkcarreno avatar rick-ab avatar rishi2062 avatar rougsig avatar sandeepjak2007 avatar starhamster avatar stefma avatar suyash01 avatar timi10x avatar vishwa-raghavendra avatar vivekban avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ivy-wallet's Issues

About Ivy Wallet section in "Settings"

Add an "About Ivy Wallet" button at the button if "Settings" screen to tell Ivy Wallet's story and give credit to all contributors.

OnClick: Open Github markdown page About Ivy Wallet

Optimize home screen performance by replacing the fancy animation with simple scrolling

What do you want to be added or improved?
As a user I want home screen's transaction scrolling to be more smooth on weaker devices.

Is your request already listed in Issues?
No

Explain with bullets why do you need it

  • make my UX smoother

Explain how do you imagine it in detail
Write any implementation details that might help us better fulfill your feature request.
As a user I want to:

  • not see lagging wheb scrolling between transactions
  • the hide balance animation can be optimized

Open-source Ivy Wallet's design by uploading it publicly to Figma

Is the project building?
Yes

What would you like to improve?
I want to:

  • Upload Ivy Wallet's design project publicly in Figma

Because:

  • Contributors can use it to develop new features
  • Contributors can understand the project better
  • Ivy Design Language/System must be visible
  • A true Open-Source and community-driven project must do this

Other
CONTRIBUTORS UPDATE: We're already working on that. It'll take some time because we're migrating from Adobe XD to Figma and all components must be re-created.

Subcategories (category groups/folders)

As an user I want to be able to:

  • group categories in folders
  • see grouped categories as one part in PieChart
  • go level deeper wheb clicking category folder in PieChart

IMPORTANT: Only one category (not folder) can be assigned to a transaction.

Change Text Size

I use a really big font and zoom. It messes the letters in the app up I can't use it.

Support Light Mode

Dark mode is beautiful but it would be great to show some loves for light mode.

Question: Why `LiveData` over `StateFlow`?

Is the project building?
Yes

What would you like to improve?
Replace LiveData with Kotlin's Flow interface, StateFlow for UI

Because:
Flows are officially supported by Jetpack Compose and it's Kotlin native with a more versed and complete API than LiveData.

can not run project

I am able to clone build this project successfully to prepare for contributions, but when I hit the run button, it throws this error which I have tried to fix:

Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction
   > java.lang.reflect.InvocationTargetException (no error message)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

I tried to fix by adding these to the gradle.properties:

kapt.use.worker.api=false
kapt.incremental.apt=false

It builds successfully, but when I hit run button again on android studio, and I get this error:

/Users/xxx/xxx/JetpackCompose/ivy-wallet/app/build/generated/source/kapt/debug/dagger/hilt/internal/processedrootsentinel/codegen/_com_ivy_wallet_IvyAndroidApp.java:4: error: package javax.annotation.processing does not exist
import javax.annotation.processing.Generated;

any other thing i can try to make it work?
^

Rework ItemStatistics scrolling

Screenshot_20211103-223922_Ivy Wallet

This screen scrolling UX is glitchy for everyone and terrible on small screens.

Solution

  • Use standard scrolling instead of fancy animation.

More compact transactions UI

As per the following reviews:

  • Rated 5 out of 5 by Evren Γ‡akan.

Best money management app in play store imo. Simple yet powerful with multiple currencies and real time currency conversion rates (which i was looking for a long time). I will buy premium to support development even though i don't need premium features. I have only 1 request: please add an option to a more compact transaction look on home page. I'm using samsung note 8 (which has relatively big display compared to most phones) and i can see only 2.5 transactions on home page. It's annoying to scroll endlessly. All transaction info stays stacked to left of screen/"listview item card"..

https://play.google.com/apps/publish?account=5925949338581436830#ReviewDetailsPlace:p=com.ivy.wallet&reviewid=gp:AOqpTOGCw6-CKkAk9pvUciq_uBc9xtU15qc_H9OVC6VO_azzNPHXlhVfRS8AlT7ty1keQoLl7xPOKsEBlN5Zeg

  • Radoslav Kostadinov feedback
  • other user's reviews

Open Home More menu with swipe down gesture

Problem
To open Home More Menu you need to click the arrow down icon at the top of the screen which might be a bad experience if you're using a device with a large screen.

Solution
To improve the UX we can implement a swipe-down gesture detection when the gesture is done in the upper half of the screen. => Open Home More Menu

Screenshot_20211104-200209_Ivy Wallet

[BUG] OnboardingSplashLogin doesn't scroll

Describe the bug
The OnboardingSplashLogin Screen doesn't scroll on my device, I can not access the offline access button
To Reproduce
Steps to reproduce the behavior:

  1. Launch the app on a larger device

Expected behavior
The OnboardingSplashLogin screen should be scrollable

Screenshots

home
Smartphone (please complete the following information):

  • Device: Samsung Galaxy A21s
  • OS: Android 11

Additional context
A fix and better scaling across device should be considered

Credit cards support

To be defined... Comment if you have any ideas.

From Reviews:

  • "* Add credit card (preferable an option for multiple credit cards for same account). * Installments/payments. * add ability to set planed day of payment without automatically change 'created on'. I love to keep track when i bought the item, regardless the time it eventually sean on bank account."

User requests:

  • Allowing to make a credit card account type with billing dates so that out standing can be marked paid from an account
  • Credit card account where we set monthly credit card limit and record expenses/bill which we have to pay at the end of the month.

"Ivy Wallet is open-source" card prompt

Display a prompt card in the app that Ivy Wallet is an open-source budget manager and show them the repo so they can see the code, contribute, and open new issues.

CI/CD

Implement Cotinious Deployment for the project + CI for new commits.

Set relevant Date Picker initial date

Currently, all date pickers uses Date.now() as initial date. We should improve it by setting relevant dste based on the context. Example:

  • updating planned payment date must use the previous date as initial

Transaction labels

  • Assign multiple labels to one transaction for better filtering.
  • Labels screen
  • See transactions by labels

Setup Ivy Wallet Wiki (help center)

Create a Github Wiki for the repo where Ivy users can learn more about the product and get answers to FAQ.

  • include "Help Center" button in the app's Quick access in more menu

Change transaction date & time UX

Currently, to change a transaction's time you have to first select a date (the preselected is today which is wrong) and then select a time. This is a bad user experience.

Solution:
Have different click events for Date & Time.

Tips:

  • use ivyContext.datePicker {}
  • use ivyContext.timePicker {}

Attach Receipts/Files to transactions

As a user I want to be able to attach one or multiple files to a transaction.

  • IMAGE
  • PDF
  • DOC
  • SHEET

Max file size 10mb.

DEPENDS ON:

  • Google Drive integration (#34)

Google Drive integration

Google Drive integration is crucial for two things:

  • attach Receipts files to transactions (#6)
  • automatic backups for offline accounts (#35)

Goal

  • create "Ivy Wallet" folder in user's Google Drive
  • create "Ivy Wallet/attachments" directory for uploading attachments (receipts, invoices, etc

Success Criteria

  • create :google-drive module
  • implement GoogleDrive interface supporting:
    • creating & writing files
    • reading files
    • deleting files
  • your Google Drive abstraction can accomplish the things from Goal

Add "Request a feature" button in Settings

Add "Request a feature" button is Setting above "Contact Support" which when clicked will open a modal with title + description and CTA for submitting.

  • onSubmit: Open a Github Issue with the label "user request" via Github API

Hide transactions

USES-CASES:

  • As a user, I want to be able to hide transactions so they don't appear in the transaction history and as income/expenses
  • As a user, I want to be able to see all hidden transactions
  • As a user, I want to be able to unhide a transaction
  • As a user, I want to be able to filter hidden transactions in "Reports"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.