11# Fursuit Catch-Em-All Game System Documentation
22
33## System Overview
4+
45The Catch-Em-All system is a ** mobile-first gamified web app** for furry conventions. Fursuiters wear badges with unique 5-character codes, and attendees can "catch" them by entering these codes into the game, similar to a scavenger hunt with rarity levels, achievements, and leaderboards.
56
67## New Architecture (2025 Redesign)
78
89### Domain-Driven Design Structure
10+
911```
1012app/Domain/CatchEmAll/
1113├── Controllers/GameController.php # Main game logic
@@ -22,69 +24,78 @@ app/Domain/CatchEmAll/
2224```
2325
2426### Database Tables
25- - ` user_catches ` - Individual catches with ** points_earned ** field
26- - ` user_achievements ` - Achievement progress and completion tracking
27- - ` user_catch_logs ` - All catch attempts (includes anti-cheat detection)
28- - ` fursuits ` - Fursuit records with ` catch_em_all ` boolean flag
29- - ` events ` - Events with ` catch_em_all_enabled ` flag
27+
28+ - ` user_achievements ` - Achievement progress and completion tracking
29+ - ` user_catch_logs ` - All catch attempts (includes anti-cheat detection)
30+ - ` fursuits ` - Fursuit records with ` catch_em_all ` boolean flag
31+ - ` events ` - Events with ` catch_em_all_enabled ` flag
3032
3133### Game Features
32- - ** Rarity System** : Species are categorized as Common (1pt) → Uncommon (2pts) → Rare (5pts) → Epic (10pts) → Legendary (25pts)
33- - ** Achievement System** : 10 different achievements including Legendary Master, Speed Demon, Social Butterfly
34- - ** Mobile App Interface** : Bottom navigation with YouTube-style tab layout, Lucide icons, no emojis
35- - ** Tab-Based Navigation** : Leaderboard, Achievements, ** Catch!** (center), Collection, Profile
36- - ** Real-time Progress** : Live stats, collection tracking, and leaderboard updates
37- - ** Anti-Cheat** : Automated detection of suspicious behavior patterns
34+
35+ - ** Rarity System** : Species are categorized as Common (1pt) → Uncommon (2pts) → Rare (5pts) → Epic (10pts) → Legendary (25pts)
36+ - ** Achievement System** : 10 different achievements including Legendary Master, Speed Demon, Social Butterfly
37+ - ** Mobile App Interface** : Bottom navigation with YouTube-style tab layout, Lucide icons, no emojis
38+ - ** Tab-Based Navigation** : Leaderboard, Achievements, ** Catch!** (center), Collection, Profile
39+ - ** Real-time Progress** : Live stats, collection tracking, and leaderboard updates
40+ - ** Anti-Cheat** : Automated detection of suspicious behavior patterns
3841
3942### Routes (` /fcea/ ` )
40- - ` GET / ` - Main game interface (` fcea.game ` )
41- - ` POST /catch ` - Submit catch code (` fcea.catch ` )
42- - ` GET /collection ` - Detailed collection view (` fcea.collection ` )
43- - ` GET /achievements ` - Achievement progress (` fcea.achievements ` )
43+
44+ - ` GET / ` - Main game interface (` fcea.game ` )
45+ - ` POST /catch ` - Submit catch code (` fcea.catch ` )
46+ - ` GET /collection ` - Detailed collection view (` fcea.collection ` )
47+ - ` GET /achievements ` - Achievement progress (` fcea.achievements ` )
4448
4549### UI/UX Design (2025 Mobile-First Redesign)
4650
4751** Mobile App Navigation** :
48- - ** Bottom Tab Bar** : Fixed navigation like YouTube/Instagram with 5 tabs
49- - ** Central Catch Button** : Prominent, elevated with gradient background
50- - ** Lucide Icons** : Professional icon set instead of emojis
51- - ** Tab States** : Active tabs show colored background and icons
52+
53+ - ** Bottom Tab Bar** : Fixed navigation like YouTube/Instagram with 5 tabs
54+ - ** Central Catch Button** : Prominent, elevated with gradient background
55+ - ** Lucide Icons** : Professional icon set instead of emojis
56+ - ** Tab States** : Active tabs show colored background and icons
5257
5358** Visual Design** :
54- - ** Clean Header** : App icon, title, and settings in top bar
55- - ** Card-Based Layout** : Each section in clean white cards with subtle shadows
56- - ** Gradient Accents** : Blue-to-purple gradients for primary actions
57- - ** Responsive Stats** : Visual progress bars, circular icons, grid layouts
58- - ** Touch-Friendly** : Large buttons, adequate spacing, tap feedback
59+
60+ - ** Clean Header** : App icon, title, and settings in top bar
61+ - ** Card-Based Layout** : Each section in clean white cards with subtle shadows
62+ - ** Gradient Accents** : Blue-to-purple gradients for primary actions
63+ - ** Responsive Stats** : Visual progress bars, circular icons, grid layouts
64+ - ** Touch-Friendly** : Large buttons, adequate spacing, tap feedback
5965
6066** Content Organization** :
61- - ** Catch Tab** : Stats overview, code input, event filter (default active)
62- - ** Leaderboard Tab** : Top players with rank icons and points
63- - ** Achievements Tab** : Progress tracking with completion states
64- - ** Collection Tab** : Species collection with rarity indicators
65- - ** Profile Tab** : Future user profile section (placeholder)
67+
68+ - ** Catch Tab** : Stats overview, code input, event filter (default active)
69+ - ** Leaderboard Tab** : Top players with rank icons and points
70+ - ** Achievements Tab** : Progress tracking with completion states
71+ - ** Collection Tab** : Species collection with rarity indicators
72+ - ** Profile Tab** : Future user profile section (placeholder)
6673
6774## Recent Optimizations (Completed)
6875
6976### 1. ✅ Fixed Event Selection Logic
70- - ** Solution** : Simplified logic to always default to current event (EF29)
71- - ** Location** : ` DashboardController::index() ` lines 36-43
72- - ** Impact** : Users now see current event leaderboard by default
77+
78+ - ** Solution** : Simplified logic to always default to current event (EF29)
79+ - ** Location** : ` DashboardController::index() ` lines 36-43
80+ - ** Impact** : Users now see current event leaderboard by default
7381
7482### 2. ✅ Added Scheduled Ranking Updates
75- - ** Solution** : Created ` RefreshFceaRankingsCommand ` with scheduled execution
76- - ** Location** : ` routes/console.php ` - runs every 15 minutes during convention hours
77- - ** Impact** : Rankings stay fresh without requiring user actions
83+
84+ - ** Solution** : Created ` RefreshFceaRankingsCommand ` with scheduled execution
85+ - ** Location** : ` routes/console.php ` - runs every 15 minutes during convention hours
86+ - ** Impact** : Rankings stay fresh without requiring user actions
7887
7988### 3. ✅ Improved Performance & Caching
80- - ** Solution** : Optimized cache keys, increased TTL, specific cache clearing
81- - ** Location** : ` DashboardController ` cache methods
82- - ** Impact** : Faster dashboard loads, reduced database queries
89+
90+ - ** Solution** : Optimized cache keys, increased TTL, specific cache clearing
91+ - ** Location** : ` DashboardController ` cache methods
92+ - ** Impact** : Faster dashboard loads, reduced database queries
8393
8494### 4. Current Architecture Limitations
85- - ** Issue** : Separate user/fursuit ranking systems sharing same table
86- - ** Location** : ` UserCatchRanking ` model and ` DashboardController::refresh* ` methods
87- - ** Future** : Consider splitting into separate models for better maintainability
95+
96+ - ** Issue** : Separate user/fursuit ranking systems sharing same table
97+ - ** Location** : ` UserCatchRanking ` model and ` DashboardController::refresh* ` methods
98+ - ** Future** : Consider splitting into separate models for better maintainability
8899
89100## Key Files and Their Purpose
90101
@@ -118,13 +129,14 @@ database/
118129```
119130
120131## Configuration
121- - ` FURSUIT_CATCH_CODE_LENGTH=5 ` - Length of catch codes
122- - ` FURSUIT_CATCH_ATTEMPTS_PER_MINUTE=20 ` - Rate limiting
132+
133+ - ` FURSUIT_CATCH_CODE_LENGTH=5 ` - Length of catch codes
134+ - ` FURSUIT_CATCH_ATTEMPTS_PER_MINUTE=20 ` - Rate limiting
123135
124136## Optimization Opportunities
125137
1261381 . ** Simplify Event Logic** : Always show current event data unless explicitly filtered
1271392 . ** Add Scheduled Jobs** : Periodic ranking updates via console scheduling
1281403 . ** Improve Caching** : Better cache keys and longer TTLs for stable data
1291414 . ** Optimize Queries** : Reduce N+1 queries and complex joins
130- 5 . ** Separate Ranking Models** : Split user/fursuit rankings into separate tables
142+ 5 . ** Separate Ranking Models** : Split user/fursuit rankings into separate tables
0 commit comments