Mobile Expense Entry
To go with my Excel-based budget application
, I wanted to have a way to enter expenses remotely.
For credit card expenses, I can and do automate the downloading and importing into my spreadsheet from my credit card provider's web site.
But for cash expenses, I need to record them right away or I will forget they happened. What better way than a mobile device?
The number one debate when starting a mobile app is whether to go native or "mobile web". Each have their advantages and disadvantages which I won't go into here,
but for me the natural choice was mobile web, because...
- This app is just for me and my private use. I'm not interested in putting it in the app store.
- The user interface is fairly simple and easily done with mobile web technologies.
- I'm already familiar with web technologies, so mobile web is not a stretch, and I wanted to put this together quickly.
The idea with this app is that I'm out and about, and I have some data in my head that I want to put into my Excel spreadsheet. The good news is I keep the spreadsheet on the same computer where I run my web site,
so the web server can access it.
The UI for the mobile app is driven by data in the spreadsheet. More specifically, the categories and sub-categories for expenses are in the spreadsheet, and if I change them there,
I want the mobile app to change accordingly. I can do this thanks to the help of Apache POI
, which reads and writes Excel from Java.
When the app loads up, the server reads the categories and subcategories from the spreadsheet using POI, and generates the UI using JQuery Mobile
The user then chooses their category and subcategory, enters the amount, and submits. The server again uses POI to write the data back to the spreadsheet, and voilą, we're done.
There's not much more to say about this project that can't be said with a live demo, so here you go. I'm using an iframe over an image of an iphone here to simulate
the experience, and I haven't worked out the kinks with that, so it doesn't look and feel exactly
like it does on the phone. Also note that if you're not
in an HTML5 compliant browser, you're not supported. Upgrade!