The App I Built So I Wouldn't Have to Fly to Europe Every Time Life Got Heavy
Somewhere over the Atlantic on the flight home, I realized I couldn't take an expensive trip every time I needed to feel better.
Somewhere over the Atlantic on the flight home, I realized I couldn't take an expensive trip every time I needed to feel better.

This past spring I flew to Europe in rough shape. Nothing overly bad... Just a little depressed, a little run down physically. Stuck in a mode where I was getting through my days instead of living them. I needed to get out of my own house and my own head for a while… so Laura, my wife, took her turn with a trip of her own, and then it was my turn.
And it worked. Better than I expected. New streets, new environments, new food, a new version of myself to replace the one that had checked out for a while. I came home feeling better. But the problem with this was obvious. I can't fly to Europe every time I need to feel better.
But by the time I landed at O'Hare, I'd figured out what I could do. The trip itself wasn't the fix. Instead, for two whole weeks I'd been paying close attention to things. Noticing them and being present instead of scrolling past.
I didn't need Europe for that. I needed to bring that same attention to every day Costco runs and bedtime with my boys. I needed to find joy in the life I already had without needing an eight hour flight to get it.
So I wondered how I could build something that gave me a little bit of that feeling every day, at home, without needing a plane ticket. Something that made me pay attention to the good stuff already sitting in my life instead of waiting for a crisis to notice it. Figuring out how to turn "I should really work on that" into a record of whether I had.
I'm a software engineer by trade, and code is the tool I reach for whenever I'm trying to solve a problem in my own life. So instead of just journaling about the feeling (which I had already done many times), I opened a code editor and started building the thing that would hold it.
That thing is called Layer Cake... and its name was inspired by this: The life you want isn't achieved in a day. It's built in layers, one step at a time, and the app is designed around seeing those layers stack up until they amount to something.
Plus, I just love cake.
Before this app was even an idea, I had two Notion boards. Laura set me up with them a few months before Europe, trying to pull me out of my funk. One asked a simple question every day: What am I grateful for? The other asked something even simpler: What was the best thing that happened to me today?
It worked… for about two weeks. Then it fell apart, and the reason it fell apart is why this app exists: nothing was holding me accountable, and nothing connected any of my actions to the things I wanted to change. Notion didn't care if I posted. And nothing else tracked whether I showed up or stopped. All of my gratitude and best things entries were collecting in one place, but I couldn't see any changes those were making. Because the entries were unconnected to what I wanted to fix, the "habit" just... faded.
So when I started building Layer Cake, being able to answer those two questions in the app was the first thing I built. But I didn't want this to be just another gratitude app with a different skin. There are plenty of those apps that ask you a question every day, and they all fail the same way: entries pile up but they attach to nothing. Fast forward a few months, Laura actually noted this to me one night when she was using one of those generic gratitude apps. After using Layer Cake for over a month, she observed her generic gratitude app wasn't making connections and she had no way to resurface her existing entries to see if her goal was improving. She was posting into a void and those posts were getting lost in the ether.
The difference with Layer Cake had to be the journal entries’ connections to goals, or this app would end up the same way.
My two original boards ended up being the heart of the whole project. The daily habit of noticing came first, and goal tracking grew up around it. And that order mattered, because one version just nags you about productivity... The other simply reminds you, every day, to look for the good part in what you did.
I wanted the latter.

Every app starts as a small idea before it turns into something bigger. In this case, in addition to the journal, I wanted to build a vision/goal board I could share with the people close to me. Just a web link. Nothing to install and nothing to sign up for. That was the whole pitch.
I'd fill the board with things I wanted to be better at. Things I needed to improve on. And then share it with Laura in hopes that the act of sharing a static board would somehow, magically, make those things come true.
But I quickly realized vision boards have a design flaw. You make a beautiful collage of the life you want. You look at it occasionally. And then nothing happens. Nothing connects the image to a random afternoon, for instance, where you do something about one of those goals. A board just tells you to "want it harder"… but wanting isn't a step. Neither is "the universe." So when a goal does come true on a vision board, there's no trail of work to look back on to show your climb. There's just "I manifested this," which isn't actionable.
And most people end up quitting a goal because they can't see that progress they've made towards it (see my Notion comment above).
I wanted to build that bridge.
So I did what I always do when I'm testing a concept... I threw together a quick static webpage to get an idea of the vision (no pun intended). I liked what I saw and rebuilt it as a Progressive Web App (PWA) prototype with a backend handling dynamic parts through a proper API, with login, and a database.

Sharing the board was always my plan, but I'd pictured it more as I make a board, send a link, and someone looks at it. Then I showed Laura a board I'd created for the both of us, "Our Life 10 Years From Now," and I quickly realized looking wasn't enough. Her life was on that board also. She wasn't going to just view it.
That realization created an entire side of the app I hadn't originally planned for: collaborative vision boards. And once multiple people could be in a board, I needed to add new permissions around users who could edit that board versus users who could only view. Also, once the board was collaborative, I assumed users would want to react to each other's posts, leave reflections, and comment on specific things another person had added.
That needed to be built as well.
It kind of snowballed and none of it was on my original build list. But each piece made the app feel less like a personal notebook and more like a useful, collaborative tool... so I kept building it out.
This wasn't my first iOS app, but it was the biggest port I'd ever taken on. And by the time the PWA hit 16,000 lines, I knew needed to start thinking about creating a real native app. At this size, features were getting complicated and performance was starting to take a hit with the single page app (SPA). Another reason more important to me: I wanted actual push notifications, instead of relying on emails which can get buried or marked as spam... or ignored entirely. Native push meant the app could reach a user when it mattered.
It would be SO much cooler also.
Porting all this logic into Swift for iOS wasn't a weekend project, either. I spent a LOT of time running the PWA and the native build side by side on my phone. I checked for streaks logic, image sizing, post functionality, button placements, reflections, making sure sixteen thousand lines of decisions were uniform. Feature parity was a nightmare at times, but each version needed to feel like the other. They also needed to work with each other.
Once the port was done, I couldn't add any more features to the web version without it taking a performance hit. So the PWA stayed alive as a fully-functional, feature-complete app... a place where a user could write a long-form entries on their computer, for instance, and not need to download anything. The real depth of the app, however, the richer logic and fuller feature set, would continue on in the native app.
Every app needs a reason for a user to open it besides obligation. Streaks can work for a while, but their reward is essentially negative reinforcement... you miss one day and the whole thing breaks. That's the opposite of what I wanted this app to feel like.
I wanted something positively rewarding that accumulated no matter what. Something people would get excited about creating. So I built Frosting.
Every time a user creates anything in the app, they earn Frosting points... and these points ultimately build a cake. Layers rise, flavors get assigned, and decorations appear based on what a user did in the app: sprinkles from reflections, stars from finished goals, candles from streaks, flowers for completed challenges (which I eventually renamed "Recipes"). After a user finishes baking a cake, it joins their bakery and a new one starts.


The graphics work for Frosting turned into one of the more interesting technical problems I've needed to solve recently. My first export looked horrible and I found getting a cake to render smoothly as it fills, getting flavors to feel distinct, or getting frosting to look like frosting instead of an off-white smear... that all took a lot of work. And bringing the animated version of the cake to iOS required me to solve a problem I'd never had a reason to think about before. I needed to get a looping GIF of a flickering candle to export without the color banding that comes from basic GIF compression. That sent me down a rabbit hole into an old image dithering technique that solved it cleanly. This research work is the part of building software I actually enjoy.

Simply journaling every day can turn into a diary of good intentions. So the app also gives users things to do with it.
In the theme of Layer Cake, Recipes are guided multi-day programs designed to give a user actionable things to move their goals forward. Fix something that's been bugging you. Look at your money issues. Ask for a better deal. Mine was gratitude, which sounds soft until a custom Recipe breaks it into easy-to-digest assignments: Thank someone who doesn't know they helped you. Write about a hardship that ended up being good for you. Notice something you'd miss most if it disappeared tomorrow, and do something about it today. The action needed to be tangible, though. Every one of the steps ends with something a user does, not something they felt.


Weekly Challenges are single tasks with a deadline. All users get the same challenge each week and the challenge ends at the end of the week whether you did it or not. They're fun and designed to get someone to see things in a way they hadn't before. This week's was "Visit a part of your city you've never been to and write about what you found."
Each of these features pays out in their own confectionary currency. Finish a Recipe and you earn a cupcake. Finish a Weekly Challenge and you earn a cake pop. They all join your cakes in your bakery, which is a shelf of everything you've earned... and each one is tied to something you did. Forest players will recognize this tool. It's a little silly, but you'll want to fill and share your bakery anyway.
At one point I read back through my own help text and didn't like what I saw. It had drifted into the same self-help voice every app in this space seems to default to. Honor your journey. Trust the process. Let the universe help you.
Puke.
I am all about action. If I downloaded an app and saw that, I'd delete it in ten seconds. I don't really buy into that... and I'm not building Layer Cake for someone waiting on the universe to sort their life out for them either. I'm building it for people who actually want to get stuff done and move things forward themselves. So I went through the entire app and completely purged the spiritual language from it.
The check-in help section is the best example. I legit did research on this stuff... neural pathways, the brain's attention system... and wrote something that sounded like a psychology textbook. Accurate? Probably. Unreadable? 100%. So I kicked myself and rewrote it with something more approachable instead: Athletes review old game film, entrepreneurs reread business plans, and repetition like this changes what someone notices each day. That's all this app is. Paying attention on purpose. And that became the voice for the whole thing. Direct with a little dry snark, and no spiritual language anywhere.
The mechanism that makes the whole app work is linking.
Every entry a user writes, whether it's a quick journal entry or a reflection on a goal, can be linked directly to something on their vision board. That link is the receipt. It's the "I did this." It's what makes up the goal climb. It's what shows you showed up. And over time, each goal accumulates a trail of these connections that moved it forward... instead of just showing the picture you posted of it back in January.


Check-ins are how a user takes accountability. You go through your vision boards, one goal at a time, on a regular basis and mark where each goal stands: if you're moving toward it, drifting away from it, or it's not moving at all. During a check in, you also have the opportunity to give updates or reasons why things are marked the way they are. For those in Agile software, you might realize this sounds a lot like Daily Standup. It is. And that is exactly why I built it this way.

A heatmap shows your goal's momentum and movement over time so you can see your effort laid out visually instead of just trusting your memory of how often you worked towards it.

The app also closes the loop. If you've said a goal is a priority but haven't linked a single entry to it in weeks, it tells you. And it tells you where your attention's been going instead... without a guilt trip. That's the promise of the app: showing you the gap between what you say you're working toward and what your actions show.
Notice the wording, though. The app doesn't hold you accountable. Nothing outside of you ever really does. It keeps the record visible enough, though, that you can't fool yourself... and it turns out that's most of the battle.
And that trail has another job. When you finally achieve a goal, the trail becomes the raw material for my favorite feature in the whole app. The Goal Story. More on that in a minute.
This is the bridge I set out to build from the start. It works if all you want is a daily nudge to work towards the things you want in your life. But it also works if you want to really commit to creating action around a goal that matters to you and hold yourself to it. The tagline says it plainly: Vision boards show what you want, Layer Cake shows what you're doing about it. Every time you open the app, you get a look at where you really stand. It keeps your goals top of mind.

This was my first Android app, ever, and now I understand why so many iOS developers just don't bother crossing over. The dependency management alone could make a grown man cry. Every solution seems to require three other things, each with their own setups, and each with their own way of breaking something that worked perfectly five minutes ago. The bloat is insane... the Android app of Layer Cake is almost 5 times the filesize of the iOS version. And Kotlin is… Kotlin. I went in expecting a straightforward port and came out with genuine respect for how much simpler the iOS side of this whole project has been.
Sorry, if you're an Android developer.
You can read that both ways.
That said, I did it... Feature parity with iOS, the same design language, the same cake, the same everything, all built from scratch in a completely different language with a completely different set of tools. I hit bugs that were specific to Android's infrastructure, screen rendering issues during export that took me weeks to fix (do not get me started on screen rendering), and problems with permission systems that behave differently depending on how old a phone's operating system is. Every one of them got solved. Many were not fun in the moment. But all of them made me a better developer.
The important part is, both sides of the aisle can use this now. Half the point of Layer Cake is sharing boards with the people in your life, and you don't get to pick what phones those people carry. Now the whole household is invited... green bubbles and all.

I'll say this frankly since I know where I'm posting this. The app uses an optional AI model for a few features, and all of them are built the same way as everything else here... your data is yours and you're always the one in control. You can keep the AI off entirely (it's off by default) and Layer Cake still works perfectly. The boards, the linking, the check-ins, the cake, the recipes... none of it needs AI to function. What the AI adds is simply on top of the base app's user experience.
Everything below runs from the same AI engine. A memory. As you write, the app remembers what matters to you like your goals, your relationships, and the things you are working towards. And that memory allows a journal prompt, for instance, to feel tailored to you instead of seeming random. It's also why the weekly check in letter feels like it came from a friend who really knows you. And you are fully in control of this memory. You may open it, read it, correct it, guide it, or delete it. Nothing in there is hidden and nothing is permanent.
These are the AI features:

1) Custom journal prompts - Instead of the same hardcoded rotating bank of questions, the app can generate a journal prompts customized to what you've been writing about... and it remembers what it already asked so you don't get repetitive questions.
2) Link suggestions - After you save a written entry, the app can suggest which goal it might connect to, based on what you wrote, eliminating the need for you to do this manually. And since the secret sauce of Layer Cake are these links, the auto-suggestions make that linking feel more magical...and easier. Layer Cake will never link anything on its own, though. It shows you a suggestion, and you choose to confirm it or not.

3) Custom Recipes - Long press a goal and the app can build a custom Recipe around it with 3 or 5 days of tailored, actionable tasks that help move that goal forward. It's built specifically for that goal or board, exactly from where you are at in it, like a coach giving you a custom workout.

4) Goal Stories - This is my favorite feature of the whole app... and, I think, its real trophy. The cake is fun, but this is the thing worth chasing. Achieve a goal and the app can write up the story of how you did it. When complete, it offers insights and observations on your climb, pulled right from your own entries and check-ins. It shows the rough stretches, the light bulb moments, the falls, and the rises. It shows HOW you achieved that goal. And it is written from your own words, looking at your own climb, distilled and presented back to you. Proof that you did this, and the universe had nothing to do with it.
And not all goals have an end date... so Layer Cake also has The Goal, So Far, which lets you see your ongoing progress anytime. Its like a Goal Story in motion. So Far is there to show you you are making progress... or not... and gives you actionable items to keep that goal moving forward.


5) The Weekly Check-In Letter - Every Sunday the app writes you a short letter about everything it's noticed from your past week... about what moved, what stalled, and what your entries say when you read them all together. It offers a big-picture view with insights and observations you might not have seen. And its built entirely from your own writing, links, and check-ins, in a voice that's warm but doesn't flatter you. Again, like a friend who reads everything and tells you the truth about what it sees.

6) The app talks back - You can carry on conversations with Layer Cake about anything on your mind. And because it always knows exactly where you stand, you can ask questions, share worries, or just think out loud, and every chat is tailored to your current situation, all with the intent of helping you get closer to the life you want.
Everything in Layer Cake is about action. You can even export the tasks it gives you to Todoist or Apple Reminders.
And if you'd like AI on, but would rather a certain goal not be included in its memory, you can mute that specific goal from AI. As with everything in Layer Cake, you're always the one in control.
Everything you write in Layer Cake is private by default, encrypted in transit and at rest, and AI conversations are never used for training. Your entries are yours and you can export all your data at any time.

One more up front note. The core app, everything outside that AI list, is free and complete. The AI features will eventually be a subscription after the beta period, because every letter, every story, and every chat costs real money to write, and I'd rather charge for that than get creative with your data. Turn AI off, and you never pay a cent... and Layer Cake is still whole.
Layer Cake is live in beta right now. There is a native iOS app and a native Android app both running on a private encrypted server. The two boards I originally made for myself, gratitude and best thing that happened today, are still in my app, and I still use them every day.
And at some point, the app started building itself. Layer Cake milestones went on my own personal vision boards as goals, and the entries piled up underneath them until the app shipped… and I LOVED reading those Goal Stories after each was achieved. Every feature in this post spent time as a linked entry before it was complete.

If you want to try the app, you can learn more at layercake.me and find the current links for the iOS and Android betas.
iOS beta requires the TestFlight app and Android requires you to be signed into Play Store with the email you use for your account.
There was never a business plan for Layer Cake. I built it because I came home from a trip that helped me notice things in my own life again, and I didn't want that to fade the second the jet lag wore off. I wanted habits I could hold onto it. And somewhere along the way, those habits turned into three platforms, a gamification system I'm genuinely proud of, and a small collection of cakes with flavors I'm still inventing.
I don't know exactly how many people will end up using this. But I know it does exactly what I built it to do... which is remind me, and hopefully you, that the good part of my life isn't always somewhere else. Sometimes it's just something I did today. The entry is the proof.
Vision boards show what you want. Layer Cake shows what you're doing about it.