Mobile App

Color Sudoku Play

Visual Sudoku variant where numbers are replaced by 9 colors. Same logic, completely new experience. Glassmorphism design, 1v1 duels, social system, offline-first with event sourcing. Published on both stores.

Published in productionv1.0.3 — Android + iOS

6,020

Puzzles

6

Difficulties

9

Colors

17+

DB Tables

11

Screens

v1.0.3

Current version

Features

Key Features

Color Gameplay

Color Board

Numbers 1-9 are replaced by 9 distinct colors. Same classic Sudoku logic: each row, column, and 3×3 box without repeats.

Classic & Purist Modes

Classic with lives, error feedback, and hints. Purist without aids for advanced players.

Notes System

Mini color circles in each cell to mark possible candidates. Essential for high difficulties.

Accessibility

Designed for a broad audience including people with numerical dyslexia and children. Colorblind palette prepared.

Social & Duels

Real-time 1v1 Duels

Same puzzle for both players. Bets of 0, 10, 25, 50 or 100 coins. Winner receives double. Supabase Realtime for result detection.

Friends System

6-character codes, username search, requests (send, accept, reject, block), leaderboard among friends.

Progression & Engagement

Levels & XP

Base XP + bonuses (no hints, no errors, daily). Progressive levels with coin economy.

Daily/Weekly Challenges

Daily puzzle same for all, weekly challenges with progressive objectives and XP + coin rewards.

Streaks with Shields

Daily streaks with increasing bonuses and streak shield protection.

Monetization

AdMob Integrated

Banners on Home, interstitials every 3 games (min 60s), rewarded for hints (90s cooldown) and coins (+50, max 10/day).

Premium Subscription

$0.99/mo or $9.99/yr: no ads, additional benefits. Integrated via react-native-iap v14.

Glassmorphism Design

Differentiated Aesthetic

Multi-layer gradients, translucent surfaces with glass effect, semi-transparent borders, floating circles with blur.

Cyan/Coral Palette

Own visual identity completely distinct from Sudoku Play. Result of redesign to overcome Apple Guideline 4.3(a).

Technologies

Tech Stack

Frontend / Mobile

React Native 0.81.5

New Architecture enabled

Expo SDK 54

Build, distribution and OTA updates

React 19.1 + TypeScript 5.9

UI with static typing

Zustand 5

8 stores: game, user, auth, theme, premium, challenge, duel, friend

React Navigation 7

Stack navigation

Backend

Supabase

Auth, DB, Realtime, Edge Functions, RLS

Edge Functions (Deno)

validate-completion, sync-events

Supabase Realtime

postgres_changes for real-time duels

PostgreSQL

Schemas global + color_sudoku, 17+ tables

External Services

Google AdMob

Banner, interstitial, rewarded

Firebase Crashlytics

Production crash reporting

Apple Sign In + Google OAuth

Native authentication

EAS Build + Update

Cloud builds and OTA deployments

Local Storage

AsyncStorage

Offline event queue, preferences

expo-secure-store

Device ID, encrypted tokens

expo-sqlite

Puzzles and local cache

Main Libraries

@supabase/supabase-jsreact-native-google-mobile-adsreact-native-iap@react-native-firebase/crashlyticsexpo-linear-gradientexpo-hapticsexpo-avexpo-notificationsexpo-cryptoexpo-batteryexpo-auth-sessionexpo-apple-authentication@react-native-community/netinfoi18nextreact-native-gesture-handlerreact-native-view-shotexpo-sharingjsonwebtoken
Design

Architecture Decisions

Event Sourcing for Sync

Actions as immutable events with UUID. Local queue in AsyncStorage, batch sending. Server processes idempotently and returns canonical state. 9 event types supported.

Offline-First

Puzzles in SQLite, games in AsyncStorage, local event queue. 5s debounce, min 30s between syncs, max 3 retries with progressive delays (5s, 15s, 60s).

Shared Multi-Schema

Same Supabase as Sudoku Play. Global schema for users/friendships, color_sudoku for game data. Public views with color_ prefix as abstraction layer.

Dual Anti-Cheat

Client calculates for immediate feedback, server recalculates everything. Movement history analysis, impossible time detection, suspicion scoring and shadow bans.

Zustand by Domain

8 separate stores (game, user, auth, theme, premium, challenge, duel, friend). Selective renders and clear separation of concerns.

Realtime for Duels

Supabase Realtime (postgres_changes) detects when opponent completes. Automatic coin sync on complete, decline, or expire.

HMAC Request Signing

Each sync signed with timestamp, nonce, and deviceId. Server validates signature before processing, preventing in-transit manipulation.

Engineering

Technical Challenges Solved

Apple Rejection (Guideline 4.3a)

Problem: Apple rejected the app for being too similar to Sudoku Play. Changing numbers to colors wasn't enough differentiation.

Solution: Complete redesign with glassmorphism system: multi-layer gradients, translucent surfaces, floating circles, cyan/coral palette.

→ App approved on App Store. Glassmorphism became the visual identity.

Robust Offline Sync

Problem: Guarantee zero data loss without connection, including completions, purchases, and duels.

Solution: Event Sourcing with persistent queue, UUIDs for idempotency, state reconciliation, smart sync with battery level.

→ Zero data loss reported in production.

Background Crashes on Android (Samsung)

Problem: Background fetch causes critical crashes due to aggressive Samsung battery restrictions.

Solution: Platform-specific detection: disable background fetch on Android, opportunistic sync on open/complete/screen change.

→ Complete crash elimination, no perceptible impact.

Consistent Duel Economy

Problem: Guarantee correct coin handling for victory, defeat, draw, rejection, expiration, abandonment.

Solution: Server-side logic in transactional SQL functions. Atomic coins. Client only syncs resulting balance.

→ Zero balance inconsistencies. All edge cases covered.

Shared Multi-App Database

Problem: Two apps sharing users/friendships but with completely separate game data.

Solution: Multi-schema architecture: global + dedicated schemas, naming with prefixes, public views as abstraction, RLS per schema.

→ A player can be friends in both apps with a single account, independent data.

Status

Project Status

Completed & In Production

  • Complete gameplay with Classic and Purist modes
  • 9-color system with differentiated palette
  • Complete glassmorphism interface
  • 1v1 duels with bets and Realtime
  • Friends system with friend codes
  • Offline sync with event sourcing
  • Anti-cheat with server-side validation
  • AdMob + premium subscription monetization
  • Google + Apple + guest authentication
  • Daily/weekly challenges
  • ES/EN internationalization
  • 6-slide interactive onboarding
  • 9 professional SQL migrations
  • Published on App Store and Google Play

Pending

  • IAP subscriptions on both stores
  • Supabase Realtime for duels
Results

Key Achievements

Published on App Store and Google Play — overcame Apple rejection and complete redesign

Offline-First architecture with Event Sourcing — zero data loss in production

Server-side anti-cheat with movement analysis, impossible times, and shadow bans

1v1 duels with Supabase Realtime, coin bets, and all edge cases resolved

Multi-App shared infrastructure with Sudoku Play — same users, separate data

Glassmorphism redesign that achieved visual differentiation for Apple Guideline 4.3(a)

6,020 puzzles with 6 difficulty levels

9 professional SQL migrations with schemas, functions, triggers, RLS, and audit

Details

Additional Information

Languages

Spanish + English

Modes

Classic + Purist

Themes

Dark + Light (2 more planned)

Puzzles

6,020 unique

Sudoku Color Palette

Coral red

Turquoise

Sky blue

Mint green

Soft yellow

Violet

Orange

Seafoam

Gold

Schema global

Users and friendships shared with Sudoku Play. One player uses a single account for both apps.

Schema color_sudoku

17+ tables: catalog, completions, stats, duels, events, challenges. Public views with color_ prefix.

Syncable Events

PUZZLE_COMPLETEDPUZZLE_STARTEDPUZZLE_ABANDONEDHINT_USEDAD_WATCHEDSTREAK_SHIELD_USEDTHEME_PURCHASEDDAILY_CHALLENGE_COMPLETEDCHALLENGE_CLAIMED