Roadmap - xopherdeep/do-it-for-the-xp GitHub Wiki
πΊοΈ Do It For The XP - Project Roadmap
Mission: Transform mundane chores into epic quests, making productivity an adventure for families and individuals.
ποΈ Current Landscape
The application is currently divided into three main pillars:
1. π‘οΈ The Game Master (Admin/Parent)
Located in src/app/SideMenu/XpGameMaster
- Dashboard: High-level overview of the game state.
- Compendium: Database management for the game world.
- Achievements: Quests and tasks.
- Bestiary: Enemies (represented by tasks/challenges).
- Abilities & specialized Magic: Rewards and tools for players.
- Accessories: Items to equip.
- Temples: Training grounds.
- Do This, Not That: Habit tracking/correction system.
- Chat: Communication Channel (likely for GM <-> Player messaging).
2. βοΈ The Player (Bounty Hunter)
Located in src/app/Console/MyPortal
- My Portal: The central hub for the player.
- My Home: Personal space (Calendar, Cooking, Posts, Growth).
- My Party: Team management.
- Hometown: Virtual town hub (Shop, Hospital, Bank, Temple).
- World Map: Navigation and exploration.
- My Profile: Stats and progress tracking.
3. βοΈ Core Mechanics
- Battle System: The "Gamified" task completion engine.
- Currency System: GP (Gold), XP (Experience), AP (Ability Points).
- Tech Foundation: Vue 3, Ionic 7, Capacitor, TailwindCSS.
π§ Technical Roadmap (The "Under the Hood" Quests)
These items are critical for long-term stability and developer experience.
Phase 1: Standardization & Cleanup
- Service Refactor: Organize
src/lib/servicesinto feature modules (e.g.,features/battle,features/economy). - State Management Evolution: Migrated complex Vuex modules to Pinia for better TypeScript support and modularity. (Phase 1 Complete)
- Component Architecture: Establish a clear
atoms->molecules->organismshierarchy to reduce code duplication insrc/components. β - Legacy State Cleanup: Complete removal of all Vuex modules and dependencies in favor of Pinia. β
- β Core components migrated (App.ts, Router, BattleService)
- β Battle views migrated (BattleField.ts, useBattleEngine.ts)
- β Dev tools & Test utilities migrated
- β Vuex uninstalled and store files deleted
- Dashboard UI Cleanup: Refactored
XpDashboardto use reusable atoms (XpStatBox) and grid components (XpDashboardGrid), removing dead code.
Phase 2: Performance \u0026 Quality
- Player Stats \u0026 Leveling System: Implemented proper HP/MP calculation based on level, job class, and special stats. See Player-Stats-Leveling.md
- β Base stats per job class (Warrior, Mage, Thief, Monk)
- β Level-based HP/MP growth formulas
- β Special stats contribution (Endurance β HP, Intelligence/Wisdom β MP)
- β XP requirements per level (quadratic scaling)
- β
PlayerStatsServicefor centralized calculations - β
useBattlePlayerhook for battle HUD integration
- [/] Page Standardization: Implement standardized page shells across the app. @[docs/Page-Architecture.md]
- Game Master Pages: Convert to
XpRpgPagepattern (viaXpPage). - Tab Pages: Standardize
XpTabPageusage in dashboards. - Portal: Refactor My Portal to proper
XpPortalPageshell. β - Dungeon/Temple Grounds: Formalize
XpDungeonCrawlerPage or XpTempleGroundsPage.
- Game Master Pages: Convert to
- Profile Persistence: Current user profile now persists to localStorage across page reloads
- Unit Testing: Increase coverage for core logic (Battle System, GP calculations).
- E2E Testing: Expand Cypress tests for critical flows (Login β Task Completion β Reward).
- Asset Optimization: Review
assetsfolder size and implement lazy loading for images/audio.
Phase 3: Code Quality & Refactoring
Goal: Split large files, extract reusable hooks, atomize components. SFCs should be <500 lines.
π§Ή Standardization (New)
-
Global Linting Cleanup: Resolved 18+ ESLint errors and warnings across core files. β
-
Document Standards: Create
docs/CodingStandards.mdβ -
Mobile Navigation Fix: Resolved Compendium tab issues on mobile devices.
-
Compendium Tab Root Navigation: Fixed bug where clicking active tabs didn't return to root index. β
-
[/] Mixin Migration: Migrate all legacy Mixins to Composables (
src/hooks/).-
useTravelingMerchant -
useItemFetcher -
useUserActions
-
-
View Restructuring:
- Move
src/views/Consoleβsrc/app/Console - Elevate
XpGameMasterβsrc/app/GameMaster - Group System/Settings pages into
src/app/SideMenu
- Move
-
Router Refactoring: Split monolithic router files and guards.
-
router/guards/- Extracted individual guards (Auth, Battle, etc.) -
game-master.routes.ts- Split child routes into modular files
-
-
Ability System Refactor: Separated types vs runtime constants.
- Created
types/abilities.tsfor pure type definitions - Moved runtime logic to
hooks/abilities/abilityConstants.ts
- Created
πͺ Hooks Restructure
New organized hooks structure with domain subdirectories:
src/hooks/
βββ battle/ # Battle-related composables
β βββ index.ts # Barrel export
β βββ useBattleDialogs.ts # β
Dialog queue, typing, advance
β βββ useBattleAnimations.ts # β
Attack, hit, victory anims
β βββ useBattleRewards.ts # XP/GP calculation (pending)
β βββ useBattleEngine.ts # Core state (move from views)
βββ temple/
β βββ useTemple.ts # Gameplay navigation (move here)
β # NOTE: useTempleCreator.ts stays in views/XpTempleCreator/hooks/
βββ abilities/
β βββ useAbilities.ts # (move here)
β βββ useAbilitySystem.ts # (move here)
βββ ... (useAudio.ts, useDialog.ts, etc.)
Completed:
- Created
hooks/battle/directory structure - Extracted
useBattleAnimationsfrom BattleGround.ts - Extracted
useBattleDialogsfrom BattleField.ts
Pending:
- Audit BattleGround.ts unique features before deprecation
- Extract
useBattleRewardshook - Move
useTemple.tstohooks/temple/ - Move ability hooks to
hooks/abilities/
π΄ Large Vue Files (>800 lines) - Need Code Split
| File | Lines | Action |
|---|---|---|
BattleroomDevTools.vue |
1610 | Split into .vue/.ts/.scss |
XpTempleSettings.vue |
1154 | Split into .vue/.ts/.scss |
XpConfigAchievement.vue |
1429 | β Split Completed (.vue/.ts/.scss separation) |
XpAbilities.vue |
978 | β Split Completed (.vue/.ts/.scss separation) |
XpAbilityManager.vue |
977 | Split into .vue/.ts/.scss |
XpBackgroundSelector.vue |
906 | Split into .vue/.ts/.scss |
JobClassSelector.vue |
877 | Split into .vue/.ts/.scss |
SwitchProfile.vue |
851 | Split into .vue/.ts/.scss |
MyParty.vue |
845 | Split into .vue/.ts/.scss |
π Large TypeScript Files - Need Modularization
| File | Lines | Action |
|---|---|---|
BattleField.ts |
1532 | Extract into battle hooks |
BattleGround.ts |
1315 | Orphaned - audit & deprecate |
useBattleEngine.ts |
974 | Split into sub-hooks |
useTempleCreator.ts |
929 | Split into sub-hooks |
[!IMPORTANT] BattleGround.ts is orphaned (no .vue, not imported) but contains unique animation work. Do NOT delete without full audit. Toast methods deprecated for battles - use
useBattleDialogsinstead.
π’ Components to Atomize
Atoms (single-purpose, primitive):
CurrencyBadge- GP/XP/AP display with iconHealthBar- Reusable progress bar with colorLevelBadge- Simple level number displayElementIcon- Temple element type with icon/color
Molecules (atom combinations):
BeastCard- Beast preview with statsRoomTypeSelector- Room type pickerQuestPreview- Quest info cardUserChip- User avatar + name badge
Organisms (complex UI sections):
TempleMap- Full dungeon map displayAbilityGrid- FFX-style grid viewBattleHUD- Complete battle UI
π File Splitting Template
When splitting a large SFC:
ComponentName/
βββ ComponentName.vue # Template only + imports
βββ ComponentName.ts # All script logic (defineComponent)
βββ _ComponentName.scss # All styles
βββ index.ts # Export barrel
π Feature Roadmap (The "New Frontiers")
Quarter 1: Deepening the Gameplay
-
Enhanced Battle System: β Core system complete
- β Battle intro dialog with Earthbound-style typing
- β Integrated action menu within dialog box (replaced FAB)
- β Player HUD with animated HP/MP bars
- β Battle music integration
- β UI Polish: Synchronized Area FAB blur, optimized Avatar presentation, standardized Ref-based modal dismissal, implemented global tab-bar highlighting, added a premium splash page for temple discovery, fixed the retro User HUD menu toggle, and matched the "Attack" task menu styles to the main RPG dialog menu (removed headers and updated icons to claw-marks).
- β
Temple Navigation: Implemented state-based smooth scrolling, formalized
/splashdefault routing, and tiered background strategy (parent-hosted vs child-transparent). - β
Setup Slideshow Polish: Transformed the onboarding flow with premium glassmorphic UI, dynamic
bg-slidecolor variations per system, andvue3-autocounterstat reveal animations. - β
Quest Type Refactor: Replaced standard radio groups in
XpConfigAchievementwith iconic, dialpad-grid selection modals. Implemented genericXpTypeSelectorModalfor streamlined Quest and Party type definition. - Add "Boss Battles" for major milestones (pending)
- Visual polish for battle animations (ongoing)
-
Unique Equipment System: Implement consumable and active items to manipulate the task queue. See Equipment-Mechanics.md
- Documentation: Defined mechanics and MP costs for all 16 distinct items. β
- Core Logic: Create
EquipmentServiceto handle item effects (MP deduction, task manipulation). - UI Integration: Connect
EquipmentItems.tsactions to the new service.
-
Hometown Expansion:
- Bank: Implement interest/investment mechanics for GP.
- Hospital: Add "Wellness" checks and HP recovery mechanics.
-
[/] Temple Creator: Finish the
XpTempleCreatorto allow GMs to build custom training regimens.π° Room Editor Roadmap (Dungeon Maker Style)
Inspired by Link's Awakening dungeon maker - each room is fully configurable by the Game Master.
β Completed:
- Room type selection modal with categories (Combat, Resources, Recovery, Navigation, Structure)
- Cardinal door system (N/E/S/W) with lock toggle
- Adjacent room detection for wall limiting
- Monster room beast selector integration
- Lock-on-enter toggle for combat rooms
- Room navigation (prev/next) within editor
- Battle dialog integration with card menu actions
- RPG-styled menus (XpRpgMenu atomized component)
- Area FAB (Page Menu) centered on screen with backdrop + close button
- Wall icon consistency (using temple element icons)
- Floor grid size configuration (custom X/Y dimensions)
- Floor deletion with 1F protection
- Clear cell action in floor editor context menu
- Room data save/reload with toaster confirmation
- Standardized Coordinate Display (+1 Offset) β
- Monster Room Config Token Visibility β
- Raw JSON Temple Editor β
- Wall Token Logic Fix: Resolved adjacency bugs and readability issues (
____tokens) - Room Editor Toggles Fix: Resolved double-triggering bug on "It's a Trap" and Mimic toggles where clicking the switch itself failed to toggle. β
π― In Progress:
- Loot Room Configuration β
- Treasure chest reward selector (items, gold, XP)
- Mimic chance toggle (trap chest) with beast selector
- Gold amount slider, consumable items grid
- Shop Room Configuration β
- Shop selector linking to existing shops from ShopsDb
- Navigation & Focus β
- Formalized
/splashdefault routing for temple entry - State-based smooth scroll and highlight on return navigation
- Tier-isolated accordion focus for beast management
- Tiered background strategy (parent-level
bg-slide)
- Formalized
π Pending Room Configurations:
Room Type Config Options Priority Health/Mana Restoration %, cooldown Medium Key/Master Key Key ID, door targets High Trap Damage type, amount, visibility Medium Puzzle Puzzle type, reward Low Teleport Destination room link Medium Secret Unlock condition (bomb, key, etc.) Low Boss/Miniboss Boss selection, loot table High π§ Technical Improvements:
- Temple Engine Architecture (The DSL Approach)
- Establish the Spatial Palette: 4-character tokens (e.g.,
____,_XX_,$__$) for monospaced grid design. - Implement the Hydrator: A loader that converts static blueprints (Flyweight) into mutable room instances (Instance).
- Develop the Interaction Controller: Handles movement, reciprocal door locking logic, and state synchronization.
- Create the Core Game Loop: Integration of Load -> Render -> Input -> Update.
- Establish the Spatial Palette: 4-character tokens (e.g.,
- Room data persistence to temple save
- Room preview in grid view
- Room validation (must have entrance, boss for temples)
- Template rooms (pre-configured room types)
Quarter 2: Social & Connectivity
- Multiplayer Parties: Allow multiple "Bounty Hunters" to join a party and tackle quests together.
- Cloud Sync: Robust offline-first data sync (if not already fully implemented via PouchDB/etc).
- Push Notifications: "Quest Available" or "Battle Started" alerts via Capacitor.
Quarter 3: Player Customization
- Avatar Builder: Expand the character customization options.
- Housing System: Allow players to spend GP to decorate "My Home".