Mirror

2023 — 24

Mirror was a publishing platform where writing could be minted and collected. While I was there it pivoted toward social twice. First to a group chat app with transactions built into the conversation, then to Kiosk, a Farcaster client, once Farcaster found an audience.

The first thing I shipped at Mirror was the checkout for buying a writing NFT, the modal flow and the wiring into the contracts behind it. Around a million transactions went through it, and it distributed over $150k in creator rewards. There's not much to say about a checkout that works, which is the point of one.

The connection layer was next. Bug reports arrived steadily and almost none of them reproduced. The cause was our own custom logic on top of ethers.js, written before the ecosystem had settled on anything. I migrated to wagmi and ConnectKit across every surface that touched a wallet, and the flaky reconnects stopped being a category of bug report.

Kiosk was the last pivot of my tenure, and two of us built the entire first version. We used React Native and Expo, with Neynar for Farcaster data. Minting and buying sat inside the feed rather than off to the side of it. The backend we had was a Next.js app that was always meant to be temporary, and it had stayed well past its expiry. Notifications forced the issue. They were a core retention loop, and the first piece of the product that needed a backend we intended to keep. I built an Express backend, ported the existing endpoints, and wired notifications end to end. Neynar indexes Farcaster and sends us the event. We filter on user score and notification settings, then push. The port took a couple of days, most of it while I was at FarCon. Kiosk shipped to 500+ TestFlight users.

Three products in eighteen months. I came in as a frontend engineer and left having written the backend.

  • React
  • TypeScript
  • React Native
  • Expo
  • wagmi / viem
  • Node / Express
  • Neynar