I've started building something new.
I'm about four weeks in and already finding it incredibly useful in my day-to-day.
I've built many different apps over the years, thrown them against the wall, and excitedly watched which ones developed a following and which ones failed miserably.
Most of my apps have fallen into two categories. There are the ones that solve a personal need I face, that I can inform and direct with my own experiences. And there are those where I saw a market opportunity or just thought they might be fun to build.
Almost all of the ones in that second category have failed. Incoming!, Nottingham, Highwire. They each had their share of a few passionate and engaged users, but mostly were ignored. (The jury is still out on Triage.)
But that first category of apps? Those have flourished.
I was a web developer for ten years before I started building Mac apps. I know the industry well. And working at an agency meant I was juggling many different websites at once. I needed a faster/easier way to spin up local development environments, and that led to me creating VirtualHostX. Which, in turn, led to Hostbuddy and Hobo years later.
My core set of apps, as I think of them, found a wonderful niche among solo web designers and developers and the small companies they work for. And the apps have succeeded beyond my wildest dreams. From 2012 to 2014 they were my full time and only job.
But since their heyday in 2014, sales have steadily declined. A big part of that, I think, is because the world has moved on from the LAMP-based standards of 2004 - 2012. NGINX, NodeJS, etc. have led to a sea change. If it weren't for WordPress's continued dominance, I'm not sure if I'd have any more sales at all.
So, I've seen the writing on the wall for a few years now, and have been on the lookout for ways to branch out and diversify my app portfolio.
I've done some freelance jobs here and there, and tried a few new things on my own, but nothing has taken off. And as I talked about earlier, I think a lot of that is due to none of those new ventures being true passion projects that I could bring my own experiences as a user with specific needs.
But four weeks ago I finally became fed-up with the awfulness of Mint.com. I know they're able to provide a free service because they plaster the site with advertisements and sell my data, and I'd be ok with that if they weren't so intrusive. But they're taking over nearly the entire browser window now. Add to that the cumbersome Web 2.0 UI and lack of any real reporting capabilities, and I'd had enough.
What I really want is a fast, powerful, native Mac app that automatically imports my financial data and gives me the ability to slice, dice, filter, organize, and export my data in every possible way. The flexibility and power of an Excel sheet with the learning curve of iOS and the familiar paradigms of a real Mac app. Something that keeps me in control of my data, respects my privacy, and syncs to all my devices.
So I built it.
Most of it. It's not done yet, but all the major pieces are in place, and I'm using it to track my family's budget every day.
I've taken a heavy dose of inspiration from one of my favorites apps - OmniFocus - both from a UI perspective (a clean, modern, attractive Mac interface) and from the power they afford users over their data by way of custom perspectives.
My app is smart. It auto-categorizes your transactions. You can just let the app do its thing and everything will end up in the (mostly) appropriate place. Or you can categorize each transaction manually. Or you can setup smart rules to do it for you automatically. Whatever fits your workflow.
Each transaction can belong to a single category. But categories can be nested. With one click you can see all the dining out you did last month. Or just the fast food orders. Or just what you spent at McDonalds.
And then there are tags. Assign multiple tags to a transaction. Do it manually, or create a smart rule to assign them automatically. Then use the app's powerful search feature to find any combination of AND / OR.
Take search further by combining tags with categories and date based filtering. Find every Uber ride tagged #business during the last quarter and export the results to a CSV you can send to your boss to get reimbursed. Snapped a picture of the receipt with your iPhone? Yep, you can attach files, too.
And once you've got that perfect search query and set of filters in place, save it as a new Report that you can recall at any time. Just like an OmniFocus perspective.
And, just for fun, why not view all of your transactions plotted on a map?
I've got all of this working (albeit without the necessary UI/UX polish) and it's totally opened my eyes to some aspects of our financial situation that I'd overlooked. The last major piece is adding a budgeting component. I know the system I want to adhere to, but I'm still working through how it will fit in the interface.
Of course, I'm leaving out the iOS counterpart. But I'm saving that for later. The model layer is still a bit too much in flux. But I've written all the business logic to be platform agnostic. So the plan is to reimplement the appropriate features in UIKit (not everything the Mac app can do would make sense or be needed on a mobile device) and reuse as much of the existing codebase as possible.
But don't forget syncing. As I said in my requirements, I want this app to be privacy-focused and have the user be in charge of their own data. So, no financial data will ever touch my server. Unless they enable syncing, no data will ever leave their device. But if they do want to sync, that's all privately handled by CloudKit so I, the developer, can't see their info even if I wanted to.
So, that's it. That's what I've built and am working towards completing. I have no idea when it will be ready. CloudKit could easily throw a big wrench into everything. And I've also got major updates to VirtualHostX and Hostbuddy underway and due out this Fall.
But I'm excited. It's an app I'm passionate about and I have a clear direction and feature set in mind. It caters to a broader audience than my developer-focused products and could potentially save my tiny company if they continue to trend downwards.