Replies: 6 comments 1 reply
-
Hello! You beat me to it, I was about to create a similar discussion. I would also like to see tags being added as it enables a lot of additional flexibility 👍 For example, tracking how much I have spent on food during this year's trip to Japan would be a matter of filtering on expenses in 2024 in the food category with the tag japan. But as for the second part of your proposal (removing transaction types), I much prefer Maybe's clear distinction between Income/Expense/Transfer. For example, transfers are going to have some special UI elements attached to them (an icon in the transaction list, probably some UI to link transactions together, ...). If everything was a category instead, it would mean that just the Transfer category would have to be treated in a special way, which I think would introduce a lot of complexity and confusion. Granted, whether a transaction is an expense or transfer can be derived from sign of the amount + account type but I still feel like choosing the type explicitly even for this results in better UX as opposed to forcing the users to fiddle with + and - signs. |
Beta Was this translation helpful? Give feedback.
-
Here's a draft of what it might look like, I added some demo_data: Thoughts on displaying:
Tags should probably all have the same color, or inherit a color from a category if we deem them "special", but tbh I think this really hurts readability. How do you want to edit transactions?
|
Beta Was this translation helpful? Give feedback.
-
See: #714 |
Beta Was this translation helpful? Give feedback.
-
@flacnut thanks for this detailed proposal, I've left some responses below: Introducing TagsI 100% agree with you and @jakubkottnauer that we should add tags to the system. @jakubkottnauer's example of the "Japan Trip" is a perfect use case for this and adds a ton of flexibility to the system. Removing TypesI do not think that we should ever depend on a Categories and tags are editable by the user, and therefore, should only be used for things like searching, filtering, and organizing data within the UI. A "type" would represent a more stable attribute on a Let me preface this by saying that the below is NOT FINAL, but here's a "types" hierarchy I was brainstorming. We've got quite a bit of work to do before all of this is supported, but I see these as the types that code can depend on for enabling certain UIs and syncing behaviors: |
Beta Was this translation helpful? Give feedback.
-
Thanks for the detailed response and sharing some of the roadmap! I'm happy to do the BE and then FE work on this once the designs are up, and I think keeping I have about 10,000 transactions already tagged in my existing system, so once Maybe supports tags I'll be able to migrate it over. |
Beta Was this translation helpful? Give feedback.
-
Closing this out as I think we've got a solid path forward for this implementation and it will be on the roadmap shortly. |
Beta Was this translation helpful? Give feedback.
-
I notice when creating a transaction I can choose between
Income
,Expense
, andTransfer
. I can the set a category, which onExpense
may beIncome
.I really like the power of categories, but I feel like something else is missing, and the additional layer of a transaction type (selected on creation) seems unnecessary.
Proposal:
Introduce Tags, Remove the "type" selector on the new-transaction modal, and keep categories as they are.
I currently do this on my own "self-host" finance app I've been building, "Collateral". I plan to deprecate my app in preference of contributing to and using Maybe.
Category
All transactions have a single category, it can be Transfer (then ignored from +/- net worth calculations), Expense, Income, or anything else the user defines. Can be toggled to "Include or exclude" from Net Worth calculations, so things like
Transportation
can count as an expense, butTransfer
may not.Tags
All transactions may have any number of tags. For example, income could be a dividend, capital from asset sale, a tax refund, salary, bonus, commission, etc. Having separate Categories for all these quickly won't scale.
Here's an example, in this case I care about recurring expenses because they are "fixed", so I have a category for it:
I have (in my app) implemented tags as a many-to-many between transactions and tags, but I regret this decision as it makes for more completed SQL in my ORM when trying to query / filter transactions by tags (has-any, has-all etc). It would be far simpler I think to have a Tag table, and then the transaction object has an Array column which stores the IDs of tag table rows. Postgres supports Array type columns and operations, but SQLite which I used in the past does not.
I plan to take a swing at this, let me know what you think.
Beta Was this translation helpful? Give feedback.
All reactions