Week 031 — Flows, a New Logo, and a Dialog Engine

This week was about stepping back from feature work and asking: what does a user actually experience, end to end?

Week of June 16, 2025

Progress

A new logo was added on Tuesday. Different font, stronger identity. Not entirely sold on the sticker-aesthetic feel of it yet.

A user flows audit was started — listing every significant flow (sign-in, sign-up, found item, lost item, QR code assignment, subscription) and assessing the degree of completion. The goal was to stop coding opportunistically and understand what was actually missing before launch. The audit produced a tracking table.

The return URL logic was completed — when a user is redirected to sign-in from another flow (like found item), the application sends them back to where they left off after authentication.

By Thursday, the observation surfaced that the app had no real messaging system — no good way to tell a user what happened, what went wrong, or what to do next. Banners were too subtle. Browser alert() is ugly and blocks. A custom dialog engine was the right solution.

The dialog library was built Friday, vibe-coded with Grok. Banners with a configurable timeout, a close button, and an optional callback that fires when the banner dismisses. Dialogs for confirmation prompts. The banner callback addressed a recurring UX problem: success messages were disappearing before the page redirected, leaving users unsure if their action had worked.

Decision Made

Redirect logic moved out of the OTP verify API. Previously, the verify API was responsible for deciding where to send the user after a successful verification. That's the wrong layer — the API shouldn't know about page routing. Now the API returns a status (loggedin vs approved) and the sign-in form makes the redirect decision. Cleaner boundary.

The Question That Appeared

The products page shows a pricing table — but if someone clicks subscribe while logged out, the page can't stop them from proceeding directly to Stripe. Whether the products page needs to exist at all, and how to gate subscription access, is still unresolved.

Next Week

Dialog engine is working but not yet deployed across all flows. Getting it integrated everywhere it's needed, and continuing to work through the user flows audit.