Bench Sports Media · Digital media · Video streaming
Bench
Building a sports streaming product across mobile, web and payments.
- My role
- Software engineer across web, mobile, streaming and payments
- Status
- In production · 2026 – present
- Areas
- Software & Product Engineering, Mobile & Web Applications
- Stack
- TypeScript · Next.js · React Native · Expo · Mux

The problem
Sports teams, leagues and independent creators need a way to reach fans directly and earn from their content without depending on broadcasters or general-purpose platforms.
That requires reliable live and on-demand video, payments that route money to many creators, and apps on every device fans use.
Context
Bench is built by a distributed team. I work across the web app, the mobile app, streaming and payments, and own the features I build from design to release.
The solution
A monorepo containing a Next.js web app, an Expo/React Native mobile app, a Vue admin dashboard and a realtime backend, with Mux for video, Stripe Connect for creator payouts and Clerk for authentication.
Architecture
- 01
Fans & creators
Web, iOS and Android
- 02
Next.js web · Expo mobile
Shared TypeScript packages
- 03
Realtime backend
Live data, server functions, auth via Clerk
- 04
Mux
Live streams, uploads, playback
- 05
Stripe Connect
Subscriptions, PPV, tips, creator payouts
What I did
Monetisation (implemented)
- Built the pricing and card-driven checkout flow and paywall UI.
- Implemented creator access controls and the pay-per-view backend; added subscriber and PPV monetisation controls.
- Fixed and refined Stripe Connect flows and channel switching.
Live streaming & video
- Improved live streaming and the viewer experience, including in-app stream preview and one stream key per channel.
- Added live comments, viewer counts, a live chat feed and tips.
- Fixed Mux upload publishing, video sizing across devices and shorts classification.
Mobile app & release
- Built out the Expo/React Native mobile app, fixed live streams ending early on mobile and kept the app usable when backend queries fail.
- Handled App Store and Google Play requirements: Sign in with Apple, account deletion for Play review, and release preparation.
Accounts & creator onboarding
- Built creator channel onboarding with unique channel names, forgot-password, and Google sign-in on web.
- Improved mobile responsiveness, navigation and the post-login flow; fixed recommendations.
Engineering decisions
- Stripe Connect for creator payouts
- A marketplace where many creators get paid needs connected accounts, not a single merchant. Connect handles onboarding, compliance and payouts per creator.
- Degrade gracefully on mobile
- When a backend query fails, the mobile app keeps working instead of crashing. On spotty mobile networks, resilience matters more than perfection.
Challenges
- Live streams ending early on mobile
- Diagnosed and fixed premature stream termination in the mobile app while adding the live chat feed and tipping.
- App store review requirements
- Store policies drove real engineering work: in-app account deletion for Google Play and Sign in with Apple for the App Store.
Outcomes
- Live at benchsports.com with subscriptions, pay-per-view, tips and sponsorships.
- Mobile app built with live streaming, live chat and tipping, and prepared for App Store and Google Play review.
Screens

Technologies
- TypeScript
- Next.js
- React Native
- Expo
- Mux
- Stripe Connect
- Clerk
- Vue
- Vercel
What I took away
In consumer products, payments and app-store policy are as much a part of engineering as features.