Philosophy of CostPal¶
CostPal is different from other application of finance/income management available on the Internet:
- Open source - free as in freedom and free as a beer. You are also advised to suggest and send some patches you consider important/bugfixes, or discuss design descision to be taken in the near future. License is GPLv2.
- Portable - using great py2exe package, it is enough to just unpack it and run it. You could also use it from a pendrive if desired.
- CSV imports - CSV exports are most widely used kind of account history data exports in banks which I had a chance to access (within Germany and Poland). That requires manual log in thru web browser and export of data for given period of time though, but at the same time they are most commonly used, they are reliable and are most simple to implement. Currently only few drivers exist, but implementing new ones is pretty easy. Please send me example .csv files if you want a support for your bank to be added.
- CSV from Dropbox - additionally, thanks to existance of CostPal Mobile application, which acts as a scratchpad, it is possible to enter draft of your transactions on-the-go using your Android smartphone, and once you are ready and next to your PC, export them to Dropbox and import with CostPal at your PC. The advantage of this solution is as Dropbox is free, no additional dependency or surcharge/subscription for using external servers/cloud is required.
- Database is centered around a single owner - just in case you would have an idea of managing expenses for two or more persons. Handling such cases is possible to some extent, but limited, eg. there is only one main cash account - for database owner. Most users however don’t care, because they use it usually to manage their transactions only, not someone’s else.
- Flexibility - I leave to the users the exact way of how they will populate the database. There is no single, proper way - every user has different needs. Hence no prepopulated default template is provided. Instead it comes provided with few example databases, presenting how different profiles of users used CostPal to manage their particular income/expense data. Some schemes are however recommended - please find exact explanation in a guide.
- Efficient user input and appropriate widgets - When other applications usually fall back to using native widgets (eg. tables), CostPal uses custom widgets whenever it is beneficial for the user. It takes time and effort to write and manage them, but in the end user has most efficient way of entering and managing data. Prime example are all the multilevel views: streams, accounts, mini-balances, import history - all utilizing in-place editing whenever applicable. CostPal uses breadcrumbs and zoom scale as efficient examples of UI experience. Another example: import history is not in form of separate, unmutable window, but integrates with other modules, and it is completely fine if during importing from CSV you edit your database using other views.
- “Keep it simple, stupid” - One way applications get bloated is not because programmers are bad persons, but because they are more focused on unneeded eye-candy, or they tend to listen to advices of wrong users. Based on such philosophy (and also limited time and effort, as I create this application alone) I came with a design, in which you shouldn’t expect ‘unnecessary’ things (too much usage of fancy icons, advanced reporting possibilities, establishing connection to your bank with screen-scraping possibilities, downloading currency exchange ratios, etc.).
- To manage EVERY possible income/expense/event - too often user is faced with a real-world event for which he is clueless how to put into his finance manager app. CostPal tries to support as high abstraction for transaction types as possible. Common example is internal transfer entry, which usually means -100$ registered on one account of yours and +100$ on the other. Here you have a possibility to turn it into one entry and CostPal will handle it correctly and display it appropriately depending on the context. Another examples are Investments, Shared Pool and Shared Payments types, used for mini-balance calculation which are maybe not used that often, but are there just when you need them. Yet another example is grouping of entries, or ‘extra information’ type. Feel free to explore possibilities and evaluate for yourself if some scheme you need is missing. Review attached examples to get the clue how to conveniently enter eg. your credit card payments and settlement, or how properly create a mini-balance for your last business trip.
- “You are only as good as your data” - this application is for people, who are aware of the fact that there is no magic rod for managing your personal stuff pseudo-auto-magically. You must take some short time to get your own idea where/how to design/store your data, how to define categories, how many streams to use etc. If you don’t input most of your data as accurately as possible, eg. omitting cash expenses, relying only on bank account CSV import, your data will be too unreliable to make any kind of useful conclusions/reports from them. It is hence advised to categorise every imported entry at the very import time, as accurately as possible.
- Database - this is really a zip file with few text files inside. Advanced users can easily modify content of it using text editor, and checking consistency of two separate databases is as simple as unpacking the content and compare them using any diff tool.
This application would fit to:
- people who would like to begin with keeping track of their own expenses and incomes
- people who are ready to take some short learning curve
- people wanting to handle some complicated schemes eg. Shared Payments, lacking from their current finance manager of choice
- power users
This application is (rather) not well suited to:
- accountants
- hobby stock investors
- casual housewives
- people with always too less time
- every other person who requires a paper clip on screen talking to them in order to become productive…