Description

siggy is an application intended for the users to write down and control their expenses monthly. In order to do so, users define a monthly budget, and then start writing down expenses in the application. The application will then show a graph with the expenses evolution against the ideal evolution (calculated from the month budget), and tell the user how much deviation they have.

Dependencies

As siggy uses some Qt widgets developed for Maemo5, it’s dependent of the libqt4-maemo5 packages coming in the version 4.6 of Qt. This version can be installed from the extras-devel repository in maemo. <—— not anymore!!!

The maemo sdk has been updated prior to the new release and the qt libraries are finally placed where it should, so no more libqt4-maemo5-* dependencies!!! :)

Functionalities in release 0.2

  • month data visualization and navigation: in the app main window, the user can see a graph indicating their expenses evolution against the ideal evolution. Besides the graph, current budget, total expense and saved money is shown as well. By clicking on the window, the graph will change between accumulated and daily views. By dragging from left to right, app will move to the previous month. Dragging from right to left will go to the next month until current month (can’t go beyond it). In daily mode, the graph shows the expenses performed each day, and in accumulated view, it shows the total amount of expeses done. The meaning of the lines in the graph is:

    • green line shows the ideal evolution to follow to achieve the budget at the end of the month. In daily mode, green line shows the expense you should do each day (budget / month_days), and in accumulated view it shows how the expenses should evolve during the month (it considers a budget/month_days expense each day).
    • red line shows the real expenses done by the user. In daily mode, it shows the expenses done each day, and in accumulated mode it shows the accumulated expense during the month.
    • yellow line only is shown when the grapth shows the current month. In that case, it indicates the current day in the graph.
  • budget definition: using the budget option in the menu, users can change the month budget, being able to set a default value for new months.

  • concept management: expenses introduced in application may have an item associated to them. Items have a name and a price. This allows the user to introduce expenses in the system by just selecting a day and an item, and the created expense will have by default the concept price associated. From the items option in the menu, the user may create new items, as delete or update existent ones. A planned feature for the future is being able to extract a list of expenses grouped by items. Warning: when an item is deleted, all the expenses associated to it are then associated to an empty item instead, but they are not deleted!! (same happens for the scheduled expenses). When this is about to happen, the user will be asked for confirmation.

  • expenses management: from the expenses option in the app menu, the user may create new expenses in current month, as update or delete existent ones. When creating new expenses, the user must specify a day and an amount. Besides, they must enter a description, choose an item or both. If an item is selected (and amount field is empty), amount will be set to the item price, but it can be modified manually, meaning that the price paid for this item is not the usual one. As adding an expense will be the most common use case, a shortcut has benn provided from the main window.

  • scheduled expenses: the application has the possibility to automatically create periodic expenses when entering a new month. This can be done through the scheduled item in the menu. There users can create new scheduled expenses, as create and delete new ones. Scheduled expenses will never modify past months. When a new month is started, the scheduled expenses that fit in it will automatically be created. This is useful so users don’t have to create the same concepts (rent, phone bill, etc) every month. Eventually, when creating a new scheduled expense, the user will be asked whether to create it in current month if it fits in the description of the scheduled expense. Same happens after a modification of an scheduled expense that caused it to fit in the current month.

  • internationalization support: localization of the strings is supported and spanish translation is included.

  • integration with Hildon Desktop: icons and .desktop file properly placed so the desktop can use them.

  • integration with backup application: siggy stores its configuration and database in a .siggy directory in the user home. Backup application is configured to manage this folder when the application is installed.

  • debian packaging: debian packaging working. HAM compliant. Warning: if the application is purged, database is removed

Functionalities in release 0.3

  • statistical view of a period: from the summary window, the user may select a period of months to get some statistics from them: total budget, total expense, total saved, maximum. minimum and average month expenses, and maximum, minimum and average month saves.
  • item expenses chart: from the summary window, the user may select a period of months and visualize a chart representing the amount os money spent in each item during that period.

Release 0.4 development notes

  • multiple account support:

    • create account database table: done
    • create account class: done
    • create dbmanager methods to create/update/delete accounts: done
    • create UI stuff to create/update/delete accounts: done
    • create stuff to select and work with an account:
      • what happens if there’s no account created? Should the app have a default one? should de user be prompted to create one? what happens when the last one is deleted? done: application can work without a selected account, but the info from the database won’t be queried until one is selected. the user is warned to select an account or create one if needed. when there’s no account selected, the user can’t do anything than managing accounts. that’s handled in the controller, but i have do handle it in the main window too: hide menu options, keep the window empty, etc.
      • update month table. months must have a reference to an account. update month mthods in dbmanager to use the active account: done
      • modify controller and month data to have an active account. main window may show the name in the window title: done
      • modify expenses table and class so the expenses belong to an account. modify the way expenses are loaded to use the active account: done
      • same with the scheduled expenses: done
      • update budget option to work with the active account: done
      • update summaries to work only with the active account: done
  • unique id for the expenses in the database, thinking of future centralized databases and syncronization: done

Functionalities in release 0.4

  • multiple account support: the can use various accounts at the same time by using the accounts menu. There must be a selected account. If not, the user won’t be able to do anything besides managing accounts and items
  • expenses in the database are identified by an UUID that allows synchronization with possible expense based servers

Changes in release 0.4.1

  • bugtracker field added to the debian/control file

Changes in release 0.4.2

  • Added an active indicator to the accounts list
  • Active account doesn’t show the delete and select button
  • First account created becomes active automatically
  • Theme icons to new expense and scheduled buttons added
  • Fixed a crash when deleting an item when there are no accounts created in the system

Release 0.5 development notes

  • DONE
    • Use the expenses graph to create a month evolution view
      • modify the expenses graph so it can work with models that are not months.
      • graph added to summary window
      • Y labels size checked
      • graph shows a message when the period has only one element
      • is summary mode, the reference shown is base on the month budget. In normal mode it’s based on the daily expense
    • modify the hiding of the dialogs so they are hidden before as the user closes them. this will improve the user speed feeling
    • create a desktop version
      • edit .pro file to handle compilation in different platforms
      • split current code into a superclass and a maemo subclass for each of the ui components
      • add a desktop version for each of the ui components
      • tweak the dialogs so they are positioned over their parent window
      • when reloading the expenses, freeze the graph redrawing until all the expenses are loaded and then redraw. Speeds up the creation of expenses
      • modify the debian packaging to set appropriate dependencies in debian/control when building for desktop and maemo
      • add buttons to the left and right of the graph to move between months in the desktop version
    • create a database updater to be able to update the database schema when upgrading to new versions of the application
  • IN PROGRESS
    • modify scheduled expenses so they can happen many times in a month
  • PENDING
    • implement the account password protection
    • implement forecasts
    • remove the debian packaging from the master branch. create a new branch for it
    • create a rpm packaging branch