jameskokoska / Cashew

💸 An app created to help users manage a budget and purchases
https://cashewapp.web.app/
GNU General Public License v3.0
1.62k stars 224 forks source link

[Feature Request] Installments, Upcoming/Overdue & More #47

Closed jordiplatero closed 10 months ago

jordiplatero commented 10 months ago

Hi!

I would like to start this feature request by saying that I love the app. I almost instantly purchased pro due to its UI and set of features. These are feature requests that I would like to see to improve the app. [At least in my opinion, lol]

I use the app on PC and Android

Installments

When you create a new transaction there's an option to create it as an isntallment which leads you to create a goal, which makes a lot of sense. The thing is, installments are not automatic, you need to manually enter a payment after creating a goal. I think in most countries when you purchase a product through an installment plan, like Amazon, the payments are done automatically on a certain date. So I would like the installments option to automatically log a payment on a certain date until the goal is reached. I know that you can do this through repeat, but that defeats the purpose of having an installment feature that can log it automatically. With repeat, you would manually need to enter the end date.

So with installments, you enter the total amount, you enter the date of the first payment, and the rest is logged automatically on the same date next week/month/year/etc

Upcoming/IOverdue Widget in Homescreen

image

Just like the income/expense, I would like the ability to set a range of time for these widgets to reflect my billing cycle.

For example, I use this app to log my credit cards transcations. So I created a budget that repeats on my cycle, and I have my Income/Expenses filtered on that same cycle.

image

Subscriptions/Upcoming Payments

I would like to have an option for subscriptions and upcoming payments to be reflected on the budget.

Use case: credit card fees and other things that are charges that will always be there to take into consideration for my budget.

Banner

Even with the short banner selected in settings, if you are logged in and you set it to show your name [android], there's a sapce that's created. I personally don't think that it looks consistent.

image

Bill Splitter

I think that this is a great feature, but it is hidden in the More > Settings & Customization. It would be great if this would be just on the More screen

WhatsApp Image 2023-11-25 at 20 32 38_3400a612

Thank you for a great app and for reading through this post. Have an amazing day and looking forward for future updates with great features!

:)

jameskokoska commented 10 months ago

Installments

When you create a new transaction there's an option to create it as an isntallment which leads you to create a goal, which makes a lot of sense. The thing is, installments are not automatic, you need to manually enter a payment after creating a goal. I think in most countries when you purchase a product through an installment plan, like Amazon, the payments are done automatically on a certain date. So I would like the installments option to automatically log a payment on a certain date until the goal is reached. I know that you can do this through repeat, but that defeats the purpose of having an installment feature that can log it automatically. With repeat, you would manually need to enter the end date.

So with installments, you enter the total amount, you enter the date of the first payment, and the rest is logged automatically on the same date next week/month/year/etc

This is an interesting suggestion. I will keep it in the back of my mind, however I feel like that is an overly complicated user experience. A simple end date makes the most sense, maybe not from a perspective of creating an installment, but for tracking. If a user was to select 'repeat until goal reached' - would this appear after the user selected a goal, would it prompt the user to add a goal, how would this work? Maybe when they select installment it creates a goal automatically and adds this transaction to it - and sets the repeat until goal completed automatically, and prompts the user on how many repayments. Cashew will then create a repetitive transaction that took the transaction total, now goal total, and split it up into a single repetitive transaction with that amount. This seems like it may confuse the user on what the app did automatically (with all the splitting)

Personally I don't use installment payments so I don't really understand it's importance. I feel like installments should be entirely separated from goals? it may make more sense logically as some users have expressed complaints/concerns over goals not being the same as installment tracking. IMO, a common goal is enough of a similarity for these to be considered the same feature though and I don't feel like adding more clutter to the app.

Would love to hear your insights, the one you provided initially is a really helpful start

Upcoming/IOverdue Widget in Homescreen

Just like the income/expense, I would like the ability to set a range of time for these widgets to reflect my billing cycle.

For example, I use this app to log my credit cards transcations. So I created a budget that repeats on my cycle, and I have my Income/Expenses filtered on that same cycle.

Done here: https://github.com/jameskokoska/Cashew/commit/d3139b42da32f249e33a1e9cdc821ab5ec4c7308 Also added for lent/borrowed home screen widgets to be consistent.

Subscriptions/Upcoming Payments

A new feature is added so that the progress bar will display a faint extra percent if there are upcoming transactions in the current budget period. I am not going to take this feature further by adding more detailed breakdowns of the amounts of upcoming transactions/seeing it in the line chart/pie chart etc. It is outside the scope of the budget feature right now. Implemented here: https://github.com/jameskokoska/Cashew/commit/d3139b42da32f249e33a1e9cdc821ab5ec4c7308

Banner

Even with the short banner selected in settings, if you are logged in and you set it to show your name [android], there's a sapce that's created. I personally don't think that it looks consistent.

When in full screen the spacing was made to be as little as possible already. However, I have added the option to show/hide the username banner on the homepage when in full screen. Like the homepage reordering, this setting is custom for the different size configuration. So edit your home page while in full screen mode to get access to this new setting. Implemented here: https://github.com/jameskokoska/Cashew/commit/d3139b42da32f249e33a1e9cdc821ab5ec4c7308

Bill Splitter

I think that this is a great feature, but it is hidden in the More > Settings & Customization. It would be great if this would be just on the More screen

I have gotten this request quite a bit. This was an intentional design decision. Once the bill splitter is made more obvious to users, they will request more features - such as sharing the transactions to different users etc. This is not what I want from this app. It will quickly be requested to become an app similar to Splitwise, which is an entirely different app and concept. The bill splitter also has its flaws and wasn't tested to its fullest, it was a somewhat rushed feature. It is just an add-on as indicated by it's home in Settings.

Thank you for the detailed feature request, really appreciate the clarity. Glad you enjoy Cashew and thanks for the support :)

Marking completed for now as I have implemented all the features I feel are necessary. Would love to continue the conversation though!

jordiplatero commented 10 months ago

Hi!

Thanks for the reply! :)

Just wanted to elaborate more on the installments feature.

I'm going to use Money Manager as an example

When you create a new installment, you are first prompted to enter the duration of the installments (how many months), then, the total amount, for this example let's say $100. If you entered three months, the payments are divided automatically into 3 repeated transactions of $33.33 on the date you set the installment to start. After 3 payments, no more transactions are created.

That's how installments work and how the Money Manager app presents them.

For Cashew, when you add a transaction, if you select installment you are greeted with a prompt to create an Expense Goal, which again, makes sense, but there's no automation.

WhatsApp Image 2023-11-26 at 10 23 35_cc5719d3

If I set an end date, nothing really happens, I'm just told by the app that I need to pay a certain amount each day to reach my goal

Once the goal is created, I would then need to add a repeat transaction, which defeats the purpose, I need to manually count the months to set the end date of the transaction.

WhatsApp Image 2023-11-26 at 10 23 36_65c5c350

What I think is missing from the Expense Goal is how many months will the expense goal last instead of setting an end date

Another alternative I think would be to change how the repeat works -

You have subscriptions, repeat, and installments - an option would be that on repeat, you can have an option to enter the amount of time it would repeat instead of an end date - which would fulfill the installment feature

Thanks for reading me!

jameskokoska commented 10 months ago

Thank you for the details!

What do you think of this workflow? You select a goal and it can calculate the repetitive transaction to make. It will not create more repetitive transactions if the goal is reached

I find maybe it's a bit confusing to put this in the transaction page? Maybe it should be separated out somehow or a dedicated add installment button when adding a goal? I'm happy with how the UI presents itself to the user and how information is gathered.

Let me know your thoughts!

Screenshot_20231126_234514.png Screenshot_20231126_234524.png
This will create a repetitive transaction with amount $100 added to this goal. After all 5 are paid (reaching the goal, no more will be automatically created) This will create a repetitive transaction with amount $20 added to this goal. After all 25 are paid (reaching the goal, no more will be automatically created)
jordiplatero commented 10 months ago

I think that looks great!

I find maybe it's a bit confusing to put this in the transaction page? Maybe it should be separated out somehow or a dedicated add installment button when adding a goal?

I think that when you create an expense goal, an "Add Installment" button makes a lot of sense. That way is not confusing at all of what you are doing. And because the already existing installment button in a transaction takes you to create a goal, that would fit perfectly.

This looks awesome!

jameskokoska commented 10 months ago

I'm going to delay this feature for now. I'm going to plan on merging this feature with https://github.com/jameskokoska/Cashew/issues/52 I personally think #52 is slightly feature creep because goals allow the tracking of payments towards a goal, however when you borrow money, you gain a positive cash flow which the goal total doesn't account for (and when you lend money, you gain the initial negative cash flow which the goal does not account for) The plan is to allow users to add transactions to other transactions. This will support partial payments of loans and I can implement the installment setup code for that feature. It will add a repetitive transaction to a loan transaction, enabling installments. I think installment payments will only be used in lent/borrowed money instead of goals, so the feature will wait until that is implemented. Will take a while to implement as it requires new database logic and new UI

jordiplatero commented 10 months ago

So installments won't be used in goals but only in lent/borrowed money transactions?

jameskokoska commented 10 months ago

I'm not sure to be honest, still thinking this one through 😕

jordiplatero commented 10 months ago

My opinion on both features and how they could work:

Installments:

You create a goal, and create and from inside the goal, you set a transaction that works as an installment. you sewt a starting date and starting amount and the payments stop once the goal has been reached.

Lent:

If you lent a big amount of money, most likely it won't be collected all together, they can make payments in random dates, not necesarrily in an installment kind of way, so there should be an option to enter a certain amount, not just collect.

jameskokoska commented 10 months ago

Thanks for the clarification! I have added them. When creating an installment a popup walks the user through. I removed it from the add transaction page itself (and put it into a popup) as that creates less clutter image

Added here: https://github.com/jameskokoska/Cashew/commit/a237b11f5afb0e0cbf321fd9136f6742a2a50a9b

jordiplatero commented 10 months ago

Thanks for the update! Works amazing, setting up my installments now.

Btw, it looks like you can't select a subcategory from the screenshot you shared

jameskokoska commented 10 months ago

Yes subcatgeory selection is not supported at the moment. It can be added later manually by the user. I can implement this when I get the chance

jordiplatero commented 9 months ago

Hi @jameskokoska,

Another observation on this - my main currency is usd $ because that's the currency they pay me on, but my local currency is HNL.

I have both goals in USD and HNL, but when you create an instalment un HNL it converts the total in USD and the payments can only be set to USD

While the total is still correct, I can't accurately track how much of each currency I've spent. Hopefully that makes sense. Thanks!