Skip to main content
← back
skip to case study

shape a mobile experience for digital mailboxes from scratch, on a small team, aiming for consumer-grade polish.

role
founding mobile engineer
timeline
oct 2024 to present
stack
flutter · dart
01starting point

founding mobile at digital domi

i joined digital domi in late 2024 as the first mobile hire. there was no app yet: a small team, a web product, and a blunt question about what a mobile mailbox should feel like.

we picked flutter. one codebase across ios, android, and web meant we could move fast without splitting attention three ways.

02architecture

keeping state where it belongs

i went with an mvc-style layout backed by providers and value notifiers. most state stays ephemeral: the screen owns it, the screen disposes it. nothing global unless it has to be.

this kept the surface area small. fewer rebuilds, fewer cross-screen bugs, and a much easier time onboarding the next engineer.

ephemeral by default. global state was a deliberate exception, never the starting point.
03shipping

a mailbox you actually want to open

the core experience is the mailbox: physical mail rendered digitally, media you can share, ad campaigns you can pull out and act on. i built the upload flow, the viewer, the share sheet, and the edge cases nobody asks about until something breaks.

in parallel i shipped the flutter web build. same codebase, deployed to s3 via github actions on every merge to main.

galleryopen any screen to enlarge · 7 shots
04system

one design language across surfaces

as the surface grew, the components got pulled into a unified design system shared between mobile and web. button, sheet, list row, empty state: same primitives, same tokens, both targets.

the result: a release on one platform doesn't drift visually from the other, and a single change propagates everywhere it should.

outcomes
ios + android + web
live on
github actions → s3
ci/cd
flutter · dart
stack