2026-03-10|3 min read|--design--ui--flashbee--indie-making--build-in-public

The Day I Stopped Fighting My Own UI

There's a specific kind of frustration that only happens when you're both the designer and the developer.

You know exactly what it should look like. You can see it in your head — the spacing, the weight, the way elements breathe. And then you open the code and it just... doesn't match.

That was me and FlashBee's dashboard. For weeks.

## The Problem With Good Enough

The old layout worked. Cards in a grid, icons everywhere, lots of visual hierarchy. It wasn't broken. But every time I opened the app I felt a small, dull irritation I couldn't quite name.

It took me a while to realize: the UI was lying to me. It looked busy and feature-rich, but when I actually used it, most of that visual noise was just... decoration. I was designing for screenshots, not for use.

The dashboard had a hero section with drop shadows and gradient blobs. Stats cards with big numbers and colorful borders. Quick-action buttons styled like floating pills.

It looked like an app. It felt like a costume.

## What I Actually Changed

I didn't add anything. I just stopped apologizing.

The hero section: smaller padding, smaller text, no decorative blobs. The streak counter doesn't need to be text-xl font-black. It just needs to be readable.

The stats cards: horizontal layout instead of vertical stacking. Icon on the left, number and label on the right. Half the height. The information is still there — it's just not performing.

The deck list: no more grid. Just a clean vertical list — thumbnail, name, card count. One line per deck. Scroll when you need to.

The quick-action buttons: fixed a subtle alignment bug that had been bothering me for weeks. The center button was slightly off. Not broken. Just slightly wrong. I switched from flex to a CSS grid with equal columns and it snapped into place.

It's a small thing. But small things accumulate.

## What I Noticed

After the redesign, I opened the app and felt... nothing. Not in a bad way. In the way you feel nothing when a door opens smoothly — you just walk through it.

That's the goal, actually. UI should disappear. When design is working, you stop noticing it.

## Shared Decks Have a Different Feel

One thing I hadn't anticipated: the new variant="saved" card style for decks shared by other users. It shows the creator's name and a star rating. Small detail. But it changes the texture of the experience.

Your own decks feel like yours — clean, minimal, just the name and count. Saved decks feel like borrowed things — slightly warmer, slightly more social. The design is doing a tiny bit of storytelling without saying anything.

I didn't plan that. It emerged from just following the logic of the data.

## The Part That Doesn't Show

There's a version of this post where I talk about component architecture and prop design and the tradeoffs between showActions and variant.

But that's not really what happened. What happened is that I sat with a UI that was quietly wrong for a long time, and then one evening I just started simplifying. And each thing I removed made the next thing clearer.

Design is subtraction. I keep forgetting that. I keep adding.

The redesign took a few hours. The weeks before it — learning to see what was actually wrong — that's where the real time went.


FlashBee is a flashcard app for Vietnamese kids learning English. I'm building it solo, one evening at a time.