Mobile App — Sudoku Play Spin-off

Killer Sudoku Play

Classic sudoku combined with arithmetic "cage" constraints. Each cage groups cells whose sum must reach a target value without repeating numbers. Built reusing 80% of Sudoku Play's architecture in just ~16 days.

Published on App StorePreparing for Google Playv1.0.0

6,000

Puzzles

5,900

Adventure Levels

~80%

Code reused

~940

New lines

~16 days

Development

v1.0.0

Version

Features

Key Features

Gameplay Killer

Board with Cages

9x9 grid with colored cages (6 colors), sum labels, 3x3 line overlay, and selected cage highlight.

Smart Validation

Real-time verification of row, column, 3x3 block AND cage. Detects exceeded sums and repeated numbers in cage.

Combination Calculator

Engine that calculates possible combinations for each cage based on size, target sum, and numbers already placed.

Notes + Hints System

Per-cell candidates with configurable auto-removal. Hints with daily limit and rewarded ads.

Game Modes

Classic

Free play by difficulty (6 levels). Timer, errors, scoring based on difficulty, time, and accuracy.

Adventure Mode

5,900 levels in 6 worlds with hearts, performance stars, and unlock gates.

Daily Challenge

Daily puzzle with coin and XP rewards. Contributes to streak system.

1v1 Duels

Challenges against friends with coin bets, same puzzle, winner by time + errors.

Social & Progression

Friends System

Unique codes, username search, friend requests, leaderboard among friends.

Shared XP

Experience and level system shared with Sudoku Play via global.users in Supabase.

Independent Economy

Own coins, streaks, and shields for Killer, separated from Sudoku Play by schema.

Weekly Challenges

Variable objectives with coin and XP rewards.

Monetization

AdMob

Interstitials and rewarded (coins, hints, extra lives). IDs configured per platform.

Premium Subscription

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

Technologies

Tech Stack

Frontend / Mobile

React Native 0.81.5

New Architecture enabled (JSI/Fabric)

Expo SDK 54

Builds, distribution, OTA updates

React 19.1 + TypeScript 5.9

UI with static typing

Zustand 5

killerGameStore, userStore, themeStore, etc.

React Navigation 7 + i18next

Navigation and ES/EN

Backend

Supabase (shared)

Auth, DB, Edge Functions, Realtime, RLS

Edge Functions (Deno)

validate-completion, sync-events

PostgreSQL

Schema killer_sudoku separate from sudoku

Services

Google AdMob

Interstitials and rewarded

Firebase Crashlytics

Production crash reporting

EAS Build + Update

Cloud builds and OTA by channels

Local

SQLite (expo-sqlite)

6,000 pre-generated offline puzzles

AsyncStorage

Preferences, event queue

expo-secure-store

Tokens and encrypted data

Main Libraries

react-native-google-mobile-adsreact-native-iapreact-native-gesture-handler@react-native-firebase/crashlyticsexpo-hapticsexpo-avexpo-notificationsexpo-linear-gradientexpo-cryptoexpo-apple-authenticationexpo-background-fetchexpo-batteryreact-native-view-shotjsonwebtoken
Design

Architecture Decisions

Separate App, Shared Backend

Independent monetization, own branding, separate store presence. Same Supabase: unified auth, shared XP, independent coins per schema.

Schema Separation

killer_sudoku.* vs sudoku.* — complete game data isolation with independent RLS, sharing auth infrastructure.

Bridge Pattern

gameStoreBridge.ts and puzzleServiceBridge.ts adapt Killer interfaces to shared component format without modifying originals. ~8,000 lines reused.

Puzzles from Existing Solutions

Python script generates cages over 6,000 verified Sudoku Play solutions. Automatic difficulty classification by cage count, size, and singles.

Event Sourcing + Offline-First

Immutable events with UUID, server-side idempotent processing. Local SQLite with 6,000 puzzles. Works 100% offline.

Server-Side Anti-Cheat

Solution validation, score recalculation, movement variance analysis, bot detection. Shadow ban without direct blocking.

Engineering

Technical Challenges

Cage Rendering over Grid

Problem: Dashed borders between same-cage cells, 6 differentiated colors, sum labels, overlaid on 9x9 grid with 3x3 lines.

Solution: KillerBoard.tsx with dynamically calculated dashed borders, alternating colors with 0.15 opacity, separate 3x3 overlay, React.memo.

→ Visually clear and performant board.

Reuse without Breaking Interfaces

Problem: 80% of code comes from Sudoku Play, but components expect specific interfaces that differ from Killer.

Solution: Bridge Pattern: bridge files adapt new interfaces to expected format without modifying original components.

→ ~8,000 lines reused, only ~940 new.

Generating 6,000 Killer Puzzles

Problem: Generating Killer puzzles with unique solutions is computationally expensive.

Solution: Python script that generates cages over existing verified solutions. Automatic difficulty classification.

→ 6,000 puzzles in 6 levels, exported to SQLite.

Crash by Board Undefined

Problem: App crashed when opening GameScreen because board was undefined during async SQLite load.

Solution: Guard in KillerBoard: if board is undefined, show ActivityIndicator instead of attempting to render.

→ Complete crash elimination, smooth UX.

Firebase Crashlytics + Expo iOS

Problem: Conflicts with static libraries and modular headers in iOS builds.

Solution: Custom config plugin (withFirebaseModularHeaders.js) that injects headers in Podfile automatically.

→ Successful iOS builds with functional Crashlytics.

Status

Project Status

Completed

  • Game core: types, validation, store, 6,000 puzzles
  • Full UI: KillerBoard with cages, all screens
  • Schema killer_sudoku with RLS, triggers, indexes
  • Published on App Store
  • Auth, themes, sounds, haptics, scoring, notifications
  • Adventure Mode with 5,900 levels
  • 1v1 Duels and friends system

Pending

  • Google Play Store publication
  • Final AdMob integration with production IDs
  • IAP configuration with specific product IDs
Results

Key Achievements

80% code reuse — modular architecture enabling new product creation in a fraction of the time

From 0 to App Store in ~16 days — planning, development, puzzles, testing, and publishing

6,000 puzzles programmatically generated with automatic difficulty classification

Production-ready architecture: event sourcing, anti-cheat, offline-first, RLS, crashlytics, OTA

Smart shared backend: 2 apps on same Supabase with separate schemas and unified auth

Bridge Pattern to reuse ~8,000 lines of components without modifying them

Details

Additional Information

Languages

Spanish + English

Modes

Classic, Adventure, Daily, Duels

Based on

Sudoku Play (~80% reuse)

Development

~16 days from 0 to App Store

Schema killer_sudoku

puzzle_catalog (cages JSONB), user_profiles, user_stats, user_completions, daily_challenges, duels, event_counters, adventure_progress, adventure_gates.

Shared Infrastructure

Same Supabase project as Sudoku Play and Color Sudoku. Unified auth, shared XP via global.users, independent economies per schema.