sheet 05 · 2025–Now · Founding Frontend, adsVase
adsVase Mobile
The native companion: reel editor, realtime chat and AI on the go.
Building
SearchTerracotta No. 4
Hand-thrown, wide-mouthed, back in the shop this morning.
Vases
Studio seconds
Small chips, smaller prices.
1242Spring glazes
Ash, celadon, oxblood.
3175Field notebooks, restocked
Sewn spine, 90gsm, flat-opening.
Terracotta run
Nine pieces, one kiln.
2453Table lamps
Warm brass, linen shades.
1821Studio seconds
Small chips, smaller prices.
1242Spring glazes
Ash, celadon, oxblood.
3175
Adora AI
Your product assistant

Hi, I'm Adora
Your AI assistant for product discovery and recommendations. Ask me anything, or tap a suggestion below.
new drop
✨Overview
A 67-screen Expo app, not a webview in a trench coat: its own reel editor, realtime chat and the AI assistant on board. Mobile is where the platform gets judged, on video-heavy feeds over patchy networks, mid-range phones, and every React Native bridge quirk nobody warns you about.
Architecture, and why
React Compiler and typed routes, early
Automatic memoization replaces useMemo ceremony and typed routes turn broken links into compile errors. Both meant refactoring real code.
Zod at every network boundary
Strict schemas throw on auth payloads, loose ones log and continue for domain data. Backend drift cannot crash the app.
Zustand for the client, Query for the server
Connectivity is bridged into Query's online manager, so a dropped line shows a debounced banner instead of a broken screen.
Feature-colocated routing
Every route folder owns its components, hooks and utils, so a feature can be understood or deleted in one move.
Two backends, one app
The REST and WebSocket API and the AI microservice each get their own client, so one can evolve without the other.
Engineering highlights
A reel editor built from scratch
Draggable text and stickers over video: racing gestures, spring physics and a delete drop-zone, with no commercial SDK.
Windowed hydration for ranked feeds
The recommender returns IDs only, so a sliding window hydrates a few at a time and preserves rank order.
Sockets that don't stampede
Reconnects use exponential backoff with jitter, so a thousand phones returning online don't arrive as one wave.
Native quirks, solved for real
FormData corrupts file-URI uploads, so media goes through the filesystem API, compressed and EXIF-stripped before it leaves.
Video that behaves
Reels play off list viewability and respect iOS silent mode, so off-screen video never fights for the speaker.
Adora AI in your pocket
Thirteen tones, twelve modes, comment sentiment and auto-reply with a human-handoff threshold. A configurable surface, not a chat box.
Impact
- 67
- screens across the app
- 63k
- lines of TypeScript
- 0
- commercial SDKs in the reel editor