Mar 9, 2026

OpenBudget Dev Log - Part 1

Working on the design of the new Home Screen, colors, and goals for the rework.

This is the first installment in what I'm hoping is a regular dev log for my rewrite of OpenBudget. My hope is to record my development process for an indie app in the modern software engineering age. I'll be trying to post regular installments, and my goal is to launch the version 2.0 of OpenBudget by the end of the year.

OpenBudget is my personal budgeting app that I developed while in high school. In recent years I've fallen short of my personal expectations for keeping it updated, and it's so far behind that I've decided it's due for a full rewrite.

I've learned a lot about software engineering since first launching OpenBudget in November of 2020. I've had the opportunity to work on projects ranging from health care, to IDEs with CodeEdit, to enterprise b2b software at PepsiCo. I'll be bringing this expertise to the table, but more importantly I'll be bringing a devotion to the craft, working view-by-view to develop a love letter to software.

OpenBudget v1

Let's take a brief look at what OpenBudget v1 looks like on the App Store right now. The app revolves around the idea of 'envelope budgeting', with a small twist. In OpenBudget, you log where you spend by category. Each category has a set limit for how much you'd like to spend. Categories can range from transportation to food to spending money, or even a goal like saving for a vacation. You can add money to each category to log income.

Often users will use the category method as an estimate of how much they spend, rather than an exact cent-by-cent log of every purchase they make. As a young person learning how to manage my money, I used OpenBudget to establish what my budget should look like and monitor that I was successfully meeting my goals.

To achieve this, OpenBudget presents all categories on the home page with a small, colored, indicator bar indicating how much money is left in the category. Each category has a balance depending on the sum of all transactions in the category.

Version One Home Screenshot

This design isn't bad. In fact, it landed a front page spot on the App Store. That being said, there's room for improvement.

Where to start?

I decided to start with a few questions and work from there.

What works well with this home design?

I did a bit of experimenting with the progress bar design, but ended up deciding to keep the original full-cell idea, but adjusted the colors to help with text clarity. Here's some of the tossed ideas.

Progress bar exploration

What should change?

What might we add?

New Design

I think that sums up everything I need to change on this. I've chosen a new color palette, with this nice green and red for the progress bars. I'm also going to be using non-system colors for the table background and selection colors.

NameOldNew
GreenOld GreenNew Green
RedOld RedNew Red
Table BackgroundOld BackgroundNew Background
SelectionN/ANew Selectoin

This pallet is much lighter. The green and reds of the progress bar allow text to be more readable on top of them. The lighter background color makes the content more of the focus, while subtly allowing shape to guide the user's eyes.

Combining all of this, we get a new Home Screen design.

home screen screenshot

I'm extremely happy with this. There's tons more visual space, the fonts are clearer, and there's more space for user's category names. On top of this, at larger accessibility text sizes the layout doesn't change very much. The fonts grow bigger, but for the most part we can keep the same layout even at those sizes.

One of the most fun things about this is that I did a lot of experimenting with fonts, specifically font modifiers and OpenType features (which I wrote about here). The result is this very nice, specialized, monetary, font for all currency labels in the app. It has more open characters, and emphasizes clarity even on small labels. There's a few other subtle typography improvements as well, such as the fact that the navigator cells now are slightly more bold than category cells, providing more visual distinction between the two.

currency font demo

The navigation is also changed. Due to the removal of the two unnecessary buttons, the remaining navigation cells can take up the full width of the screen. This is also very good for accessibility. For users who like larger text sizes, the labels grow perfectly, and don't require a layout change for the very large accessibility sizes.

Technology Details

For the more technical among you readers, I've decided to forgo Apple's SwiftUI framework entirely. I've done a lot of work in it, and have made my best attempt at integrating it into my apps. That being said, I attempted this rewrite at the beginning of last fall (2025) and even with the improvements to the framework in that time I continually came across severe limitations.

Since my goal for this app is to be proud of every single screen, I'm aiming not just for 'it works' but for perfection. SwiftUI does not achieve that for me. It's buggy, behaviors change between releases, and there are limitations to the framework that Apple's walls do not allow developers to work around. One good example of this is drag and drop. I'll write more on that topic later.

I'll be using UIKit and AppKit for the entire app. So far, it's payed out extremely well. By first starting with a design in Sketch, and moving on to the implementation with a plan for how it'll work with AutoLayout, I've removed my overhead time of messing around in SwiftUI previews nearly entirely. It's also helped me fully invest in an architectural framework based on Simon B. Støvring's talk: Achieving Loose Coupling with Pure Dependency Injection. I highly recommend checking out their talk on it.

I don't use any architecture frameworks. Might be a hot take, but... Flyn Rider meme with swords pointing at him, the caption reads 'TCA is Dumb'

What's Next?

That's all I have for this installment of the OpenBudget dev log. A lot of the topics in this are very foundational to the rest of the redesign. The new color palette, fonts, and use of space are most of what I'll be changing throughout the app, as well as some other improvement to cross-device sync and system integration improvements and reworks. I'm pumped that this is working out and I'm excited to keep sharing how things are going! Stay tuned in by following me on Bluesky or subscribing to this sites' RSS feed!