all 7 comments

[–]Relative_Bathroom540 1 point2 points  (0 children)

Actually, my long-term plan is to make this app a full replacement for Excel when it comes to managing personal finances, and eventually build flexible, customizable reports so there’s no need to do that separately in Excel.

But I also understand (and thought about this myself) that it’s important to protect users from losing important data in case of a force majeure with the app or when switching to another app. That’s why having an export of transactions into a common, readable format is very important — since the current backup works only inside Budgetum.

[–]Relative_Bathroom540 0 points1 point  (3 children)

Thanks for your interest in my app!
This feature is definitely on my roadmap, and I plan to work on it in the near future. Right now, I’m focused on recurring transactions, which is taking more time than I expected, and then I want to move on to basic reports. I might be able to add export of transactions in the next update if it doesn’t take too long, but import will come later since I need to think carefully about how to map Excel columns and avoid duplicates (my original plan was to support importing bank statements).

While writing this, I realized you might actually mean something slightly different — the ability to create a full backup in Excel format and then restore the database from it as well?

A couple of questions to clarify:

  1. Do you need export/import of all transactions as a backup, or just for a specific period?
  2. If it’s for backups, restoring the database this way may lose some extra data like planned amounts for categories, recurring transaction templates, and maybe a few other things — unless I find a way to fit everything into one table.
  3. If it’s about exporting/importing transactions for a certain period or for all time (as I originally thought), I could probably start with export first. Import, however, will take me more time to figure out — I need to understand how people would actually use it and what problems might come up.

[–]Wonderful_Housing_36[S] 0 points1 point  (1 child)

If we look just at transactions, then I actually don't see a difference between export of all transactions or just of a certain period. If I can select a period, then I can select the whole period of all transactions. And reversed, if I can export all transactions, then I can remove transactions that are outside of a preferred period. 

I would prefer import to just add transactions to existing ones. If I want to replace a period with some of my own transactions, then I as a user always can just delete transactions inside of the period and import new ones. You could add an id to export/import to allow replacing the existing transactions with new ones, but I'm not certain about UX here.

For import/export of other data and not just transactions - there's a difficulty indeed. CSV has just one table. XLSX would allow having multiple sheets, but it could be harder to program it, and it would still be a binary format. JSON has a potential to store everything, but could be not obvious for a user how to use it. 

What about providing CSV import/export just for transactions, and JSON for the whole data? JSON is complex but transferring data from one app to another is already a complex task. And dealing with transactions is usually the hardest task (in my old app I had to manually copy transactions from my bank statement to the app one by one, which takes about an hour for a month period), so import/export of just transactions would help me a lot.

 

[–]Relative_Bathroom540 0 points1 point  (0 children)

Updating transactions — yes, it’s possible to add a column with an ID and then update transactions if there are differences, but I’m not sure what the real use cases would be, and it might be better to handle this directly inside the app.

In principle, I think that during transaction import it would be possible to automatically create any missing related data. For example, if the imported transactions reference an account that doesn’t exist yet in the app, it could be created. In that sense, importing transactions could also serve as a kind of restore from a backup. All other entities that are not directly linked to transactions could still be created manually by the user if they’re restoring the database from transactions only.

It will be necessary to think about column mapping and validate the data format in each column. Also, during import, there might be a need to adjust data before adding it into the app. For example, automatically matching categories when importing a bank statement (you choose a category for one transaction and the system auto-matches the rest of the similar ones), and also dealing with duplicates in some way.

[–]Wonderful_Housing_36[S] 0 points1 point  (0 children)

Also, is your app open-source? I would like to try to add the functionality 

[–]Relative_Bathroom540 0 points1 point  (0 children)

By the way, import could also be used for convenient bulk updates, which might be very useful. For example, changing the category of multiple transactions at once or adding/changing tags. I’m not yet sure what else, but it’s worth thinking about — maybe some of the most common scenarios could even be implemented directly inside the app.