2023 — 2024 · Music
Senior Software Engineer / Architect, Head of Engineering
Sona was a streaming music app, a marketplace and an artist dashboard, built by about twenty people. I owned the web application architecture.
The App Router migration was not a large piece of work, but it was a bold call at the time. A consulting firm had been building the web front end and I picked it up, moving it off the pages router while the App Router was still in beta. The migration itself took a few days; the careful part was pushing client components down to the leaves gradually, which kept it smooth and gave us a way to adopt React Server Components incrementally. Once it was done, the firm worked that way too. It is one of a few bold calls I have made that worked out.
I picked up a Head of Engineering title when the previous head of engineering left. That was the stack, not people. We were a very autonomous team: everybody owned their piece, communicated well, and led their own domain.
Sona ran out of money in the end. The market for songs as NFTs was dead, and it was impossible to take streaming minutes from the majors.
Migrated the streaming music app from client-rendered pages to the Next.js App Router, using React Server Components and Server Actions
Built Sona Vibe Search, a music discovery experience that let users find new music in natural language, in both the web app and a Raycast extension
Built Sona Search, letting users search millions of songs, artists, albums, playlists and users and receive results in milliseconds, in both the web app and the Raycast extension
Responsible for web application architecture and for the technology stack
Built many of Sona's web3 features on the front end — wallets, smart contract integration and reserve auctions — and handled blockchain indexing on the back end
Built the design system on Tailwind, with a mix of Radix UI and React Aria
Created an image processing library and matching image component, handling device optimization, cropping, inline blurred placeholders and thumbnails
Built a custom Redis data caching mechanism to replace the built-in Next.js cache
Created a transactional email system that automated the composition and delivery of rich React and Tailwind emails from any Sona application