GraceSoftGraceSoft

GraceSoft Story, Day 3: Smoothing Auth, Shipping Email Verification, and Making the UI Feel Real

Davina LeongApril 8, 20262 min read

With the core timeline and billing foundations in place, Day 3 was about tightening the experience. The focus was authentication, UI consistency and the little things that make the product feel alive instead of stitched together.

Much of the day was less about new features and more about removing friction.

Fixing auth friction

Auth is one of those areas where small issues feel huge to users. Today’s focus was:

  • Preventing users from getting stuck on submit buttons
  • Stopping registration from hanging during email verification
  • Making sure protected routes behave properly

Key fixes:

  • Sending verification emails in the background so they don’t block registration
  • Fixing edge cases where submit buttons could get stuck
  • Putting app shell routes properly behind login

Result: auth now feels instant, not fragile.

Email verification that feels designed

Instead of treating email verification as an afterthought, I gave it proper UI attention:

  • A Sky-600 branded email canvas
  • A clean outer container for verification emails
  • Consistent logo usage

It’s one of those subtle trust builders:

If your emails look polished, your product feels more legitimate.

Making the UI consistent

Things had started to drift visually, so I pulled everything back into line:

  • Primary CTAs now share the same Sky styling
  • The sidebar layout and GitHub connect controls are aligned
  • UI surfaces across the workspace are refined
  • A reusable Lucide icon system is in place for the notes-style UI

Result: the app now feels like a system, not a collection of pages.

Timeline and interaction upgrades

The timeline is the heart of GraceSoft Story, so I focused on making it faster and more interactive:

  • Lazy-loaded fragments
  • Optimistic UI for label interactions
  • Mobile-first filters that keep their query state

Result: snappier interactions and better mobile usability.

Refactoring for reuse

Some earlier pages were getting messy, so I started consolidating patterns:

  • Story pages now share a reusable notes-style shell
  • UI state is handled more cleanly across views

Result: it’s easier to add features without duplicating logic.

Improvements to chapters and the dev workflow

Not everything is user-facing. Some of the biggest wins were internal:

  • A “Changes” section in the chapter inspector
  • A research doc on improving GitHub sync
  • A tracker for maintenance TODOs

Result: better visibility into both the product and the dev workflow.

Takeaway

Day 3 wasn’t about flashy features. It was about removing friction, making interactions feel reliable and bringing consistency across the product. Users don’t notice this kind of work explicitly, but they feel it immediately.

What’s next

With auth and UI stabilised, the next steps are likely:

  • Making GitHub sync more reliable
  • Making chapters smarter
  • Continuing to refine the story experience

Part of the GraceSoft Story build-in-public series. Originally published on DEV.

Share this post

← Back to Blog