Wednesday, January 25, 2012

Geldzin2: Final Beta Released

I've just deployed the final beta of my little financial web application (Geldzin). The beta's business goals were to put all core functionality in place while driving for a usable product that would demonstrate the trajectory I envision for personal finance management. The core functionality includes transaction log, tracking financial and debt accounts, categorization of transactions, distribution of income, a couple of spending reports, emergency fund, and charity&giving emphasis. Below is a view of the digest (main) page:

The digest/dashboard provides a snapshot of the overall financial picture. From top-left clockwise, it shows information about your bank and cash accounts (collectively called financial accounts), your credit cards and loans (collectively called debts), a trending chart of total expenses versus total deposits/income over the last 6 months, status of the emergency fund, the most active spending/budget items, and finally the most recent transactions logged. I have room for one more widget at bottom-left but haven't decided what it will be.

While the initial functionality is in place and a useful product is available to users (my wife and I have been using this webapp for over a year), I also had technical goals that this phase needed to meet:
  1. I wanted a real project to hash out my knowledge of Hibernate 3.x. This is the technology I am using for persistence management and database connectivity. The database application itself is MySQL 5.x.
  2. I wanted a real project to play with Spring MVC, which I use to receive all client requests and control access to data. The Spring configuration runs in an Apache Tomcat 6.x web container.
  3. I wanted somewhere to explore Ext JS 3.x, which is what I use for the UI and client/server communication.
  4. I've wanted to exercise the project build capabilities of Maven 3.x, which is what I use to compile and build this project and manage dependencies and releases. In tandem with Maven, I also use Subversion SVN for version control.
  5. I also wanted to improve my development process to include automated testing (using TestNG and Selenium), automated/scheduled releases (weekly in a testbay) and automated data import from old databases to new schema. For some of these, Perl saved the day.
  6. Finally, I wanted to understand the intricacies of hosting Java application on the web. I use eApps, which provides a VPS (virtual private server) with the database application, Tomcat and JVM, among other things, for about $250/year.
  7. Figure out what it takes to obtain a patent for software like this.
All these goals were met during this phase (except #7 which is still in the works). The next phase will focus on how to create better UIs (user interfaces), webapp themes (look and feel), producing technical documents (quick start and user guides, source API), mobile sites (using a framework like jQuery Mobile), how to estimate project development costs better (financial and time), and a few other business features in the release candidate (RC1). It is a learning process.