Building Fortify: Guest Mode

Cover Image for Building Fortify: Guest Mode

Two problems pushed me to build this. First, the demo experience. Fortify's signup collects a lot of personal information because Plaid and Dwolla require it, even in sandbox mode. Asking someone to go through all of that just to see what the dashboard looks like is too much friction. Second, session handling. When an Appwrite session expires, the app was hitting a dead end instead of degrading gracefully. Guest mode solves both.

The Dummy Data Decision

The guest dashboard shows a realistic balance, transaction history, and spending categories, all pulled from hardcoded constants rather than generated dynamically or stored in a mock database.

In a demo context, predictable beats dynamic. Hardcoded data tells a controlled story, a consistent first impression every time. Random or variable dummy data introduces inconsistency right where you want clarity. The data needed to be realistic enough to be believable, plausible balance, varied transactions, spending categories, without reading as a real account.

The Two-Data-Path Problem

The more interesting challenge was making the same dashboard components work for both real Plaid data and dummy guest data without duplicating logic. The conditional handling stays at the data-fetching layer as much as possible. A component rendering a transaction list shouldn't need to know whether the data is real or mocked, it should just render what it receives. Keeping that boundary clean gets harder as more components touch account data, so it's something to stay deliberate about.

The UX

Guest mode communicates in two places. The signup confirmation screen states explicitly that the account was created and the user is proceeding with demo data. After that, a persistent banner sits at the top of the dashboard for the duration of the guest session.

The banner doesn't block anything. It's just visible, a reminder that a real account connection is available whenever the user is ready. Tapping it goes directly into the Plaid linking flow. Guest mode isn't a waiting room, it's the full app with a clear on-ramp to making it real.

What's Still Open

Navigation access in guest mode isn't fully scoped yet. Pages like transfers and account settings reference real account data and may not degrade cleanly with dummy data. That boundary needs to be defined and enforced before going further.


Next up is security hardening, then more bank linking with Plaid, including OAuth and two-factor authentication.

Written with AI assistance.

Let’s Build the Future Together

I’m currently seeking a full-time engineering role where I can contribute to secure, logic-driven systems. If you're looking for a disciplined developer to join your team, I’d love to hear from you.