Skip to content

Case Study

Dice Cat: Tabletop Gaming Matchmaking App

Role: UX Designer & Full-Stack DeveloperDuration: 2024-2026Status: Live on Google Play
ReactIonicTypeScriptSupabasePostgreSQLPostGISFirebase Cloud Messaging

The Problem

Tabletop gamers accumulate large collections and strong preferences, but finding local players who own the same games, have overlapping schedules, and match on play style is genuinely hard. Existing options - Facebook groups, Discord servers, Meetup - require manual coordination and have no game library matching.

The core ask: build something like Tinder for board games that actually knows your library.

Overview

The product started as "Meeplr" - a UX concept with substantial research before a line of code was written.

  • ·Competitive analysis of existing community and matchmaking tools
  • ·User persona development - a relocated gamer with no local gaming group
  • ·Three rounds of think-aloud usability testing with 15 participants
  • ·Kano analysis: all planned MVP features tested as performative or attractive
  • ·Renamed to Dice Cat after trademark research blocked the original name - improved recall in testing

Key Features

  • ·Multi-dimensional matching: game libraries, geographic proximity, schedule overlap, and play style preferences
  • ·10,000+ game database with local fuzzy search and manual addition capability
  • ·Visual weekly schedule builder with overlap detection across potential matches
  • ·Connection request system with mutual matching before messaging
  • ·Encrypted in-app messaging for session planning
  • ·Push notifications via Firebase Cloud Messaging
  • ·Custom SVG avatar builder with layered component system
  • ·Nearby players map view via PostGIS geospatial queries

Screenshots

Discover - match feed
Gaming sessions
Game Hub
Profile with custom avatar

Technical Architecture

FrontendReact with Ionic framework for native-feeling mobile UI
LanguageTypeScript throughout
BackendSupabase (PostgreSQL, Auth, Realtime) with Row Level Security
GeospatialPostGIS for proximity queries - optimized from 3-5s to under 500ms via strategic indexing
Push notificationsFirebase Cloud Messaging, migrated to Supabase Edge Functions for reliable permission handling
MessagingEncrypted in-app messaging with Supabase Realtime subscriptions
Game databaseOriginally BoardGameGeek API; rebuilt as local database after API access was discontinued
BuildAndroid Studio for Google Play builds

Technical Highlights

Database performance

Multi-table JOIN queries for match scoring originally ran at 3-5 seconds. Strategic PostGIS indexing and query restructuring brought them under 500ms.

External API dependency failure

BoardGameGeek discontinued API access mid-development. Pivoted to building a local 10,000+ game database with community-sourced additions - better offline behavior and no future dependency risk.

Push notification permission architecture

A trigger-based approach encountered permission errors in production. Migrated the logic to Supabase Edge Functions, which resolved the permission context problem cleanly.

Links