<- 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 Android flows, and REP-powered onchain interactions.

Overview

Bunches needed a community product where sports 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 real-time messaging, typed GraphQL data, native mobile APIs, non-custodial wallet persistence, analytics, release automation, 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, permissions, and cloud settings.
  • Designed and implemented the REP token ecosystem, wallet persistence, EIP-712 signing, meta-transactions, smart accounts, and gasless onchain interaction patterns.

Product Screens

Real Bunches screens from the mobile app and Android delivery flow: chat, profile, rankings, scoreboard, takes, and device install context.

Bunches running on Android
Android App Delivery
Bunches mobile chat screen
Chat
Bunches mobile profile screen
Profile
Bunches mobile ranking screen
Ranking
Bunches mobile scoreboard screen
Scoreboard
Bunches mobile takes screen
Takes

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