← Work
BetaMobile appBuilt & maintained2024–present

SixByFive TCG Mobile

Full feature parity with the TCG platform — on Android, with a native feel.

The problem

The web platform works well on desktop, but collectors use their phones — at card shows, pulling up a binder to show someone, checking a price before buying a card across a table. A browser tab on mobile is functional but it's not the right experience for those moments.

The goal wasn't a stripped-down companion app or a marketing page that links to the web. It was full parity: everything you can do on the web platform, working natively on Android, using the same data and the same account.

Approach

Expo was the right choice for a team already working primarily in React and TypeScript — the component model is familiar, the tooling is mature, and the managed workflow means we're not maintaining native build infrastructure as a side job. React Native's bridge to the platform gives us access to native APIs where we need them without writing Java or Kotlin.

The GraphQL API that backs the web platform serves the mobile app directly — no separate mobile backend, no API versioning split to maintain. The data layer is shared; only the presentation layer is different.

Key decisions
Expo managed workflow — avoids native build complexity, keeps the focus on product rather than toolchain
Shared GraphQL API — one backend, one source of truth, no mobile-specific endpoints to maintain
Android-first — single platform to start, ship something solid before expanding
React Navigation for routing — familiar mental model, good performance on Android
Feature parity as the target — no artificial limitations relative to the web platform
What was built
Card and set search — full-text and filtered search with the same index as the web platform
Collection tracker — add cards by variant, update quantities, view portfolio valuation
Binder builder — organise and browse a binder layout natively on-screen
Live pricing — Cardmarket and TCGPlayer prices per variant, updated by the same daily pipeline
Account sync — shared account with the web platform, collection and binders available on both
Offline-tolerant browsing — recently viewed sets and collection data available without a connection
What was hard

Making search feel right on mobile

Search on a phone is a different interaction to search on desktop. The keyboard takes up half the screen, results need to load fast enough that the experience feels responsive, and the information density per result has to be lower — you can't show the same amount per card as a desktop table row. Redesigning the search result format for a narrow screen without losing the information that makes a result useful (set, variant type, price) took more iteration than expected.

Binder layout on a small screen

The binder builder on web shows a grid of cards you can arrange and browse. On mobile, that grid has to work at a much smaller scale — cards are tiny, drag-and-drop is replaced by tap interactions, and the navigation between binder pages needs to feel natural on a touchscreen. Getting this right meant rethinking the interaction model rather than porting the web version directly.

Expo build pipeline and OTA updates

Expo's managed workflow handles a lot, but the build and submission pipeline for Android still has sharp edges — keystore management, versioning, EAS Build configuration. Setting this up in a way that's repeatable and doesn't require archaeological knowledge of what was done last time took careful documentation. Over-the-air updates via Expo are valuable for shipping fixes without a full store submission, but they require care about what can and can't be updated OTA.

Stack
FrameworkExpo · React Native
LanguageTypeScript
NavigationReact Navigation
APIGraphQL — shared with web platform
AuthShared account system — same session as web
BuildEAS Build · OTA updates via Expo
PlatformAndroid (iOS planned)
Outcomes
Full feature parity with the web platform on Android
Single GraphQL API serving both web and mobile — no backend duplication
Shared account and collection sync across web and mobile
OTA update capability for fixes without full store submissions
Foundation in place for iOS expansion without significant rework

Currently in beta. Android-only for now — iOS is the natural next step once the Android experience is fully stable.