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.
6,000
Puzzles
5,900
Adventure Levels
~80%
Code reused
~940
New lines
~16 days
Development
v1.0.0
Version
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.
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
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.
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.
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
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
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.