GraceSoft Story, Day 3: Smoothing Auth, Shipping Email Verification, and Making the UI Feel Real
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.