<- Back to Bunches

Product Engineering Case Study

Bunches. Chat Sports.

A mobile-first social app for sports communities with real-time chat, group discovery, direct messages, rewards, picks, native mobile flows, and REP-powered onchain interactions.

Overview

Bunches needed a community product where fans could join groups, chat in real time, share content, receive notifications, make picks, earn rewards, and use REP without being exposed to raw wallet or transaction complexity.

I was the primary engineer behind the Capacitor client app and REP ecosystem, connecting product surfaces to realtime messaging, typed GraphQL data, native mobile APIs, non-custodial wallet persistence, and gasless onchain flows.

Impact

  • Led the Capacitor client from early Turborepo scaffolding into a production-grade mobile/web app, authoring 485 commits in the monorepo.
  • Built real-time bunch chat with Phoenix channels, optimistic updates, message history, edits, deletes, reactions, threads, and Zod validation.
  • Shaped the typed GraphQL and Apollo data layer with reusable fragments, generated TypeScript types, mutations, subscriptions, and targeted cache updates.
  • Integrated native mobile flows through Capacitor, including Android delivery, push notifications, deep links, media, sharing, haptics, and cloud settings.
  • Designed and implemented the REP token ecosystem, wallet UX, EIP-712 signing, meta-transactions, and gasless onchain interaction patterns.

Representative Product Areas

Representative panels show the major product surfaces without representing final Bunches screenshots.

Bunch Chat

messages live
reactions fast

Phoenix channels ยท optimistic state

Mobile Entry Points

Push opened the right bunch thread.
Branch link joined the invite flow.

GraphQL Data Layer

typed fragments

Generated types, subscriptions, cache updates, and optimistic UI for high-frequency social interactions.

Apollo cache Zustand state

REP Token UX

capped token supply

23B

EIP-712 signatures and gasless transaction flows

Tech & Constraints

  • React / Next.js
  • TypeScript
  • Capacitor
  • Apollo / GraphQL
  • Phoenix channels
  • Zustand
  • Solidity / REP
  • viem / wagmi / ethers

The key engineering challenge was coordinating native mobile behavior, web rendering, realtime messaging, GraphQL server state, local interaction state, wallet recovery, signed transactions, analytics, observability, and release workflows across a multi-package app.

<- Back to Bunches