# Project Refactoring Plan

## Current Status

### ✅ Completed
1. **Moved unused files to `old/` folder**:
   - `bot/` - Old Telegram bot code (no longer used)
   - `web-map/` - Old map editor
   - All `.md` documentation files
   - Old migration scripts
   - Old Dockerfiles

2. **Created new API module structure**:
   ```
   api/
   ├── core/           # Core functionality (config, security, websockets)
   ├── routers/        # API route handlers
   ├── services/       # Business logic services
   └── ...existing files...
   ```

3. **Created core modules**:
   - ✅ `api/core/config.py` - All configuration and constants
   - ✅ `api/core/security.py` - JWT, auth, password hashing
   - ✅ `api/core/websockets.py` - WebSocket ConnectionManager

### 🔄 Next Steps

#### Backend API Refactoring

**Router Files to Create** (in `api/routers/`):
1. `auth.py` - `/api/auth/*` endpoints (register, login, me)
2. `characters.py` - `/api/characters/*` endpoints (list, create, select, delete)
3. `game.py` - `/api/game/*` endpoints (state, location, profile, move, inspect, interact, pickup, use_item)
4. `combat.py` - `/api/game/combat/*` endpoints (initiate, action) + PvP combat
5. `equipment.py` - `/api/game/equip/*` endpoints (equip, unequip, repair)
6. `crafting.py` - `/api/game/craft/*` endpoints (craftable, craft_item)
7. `corpses.py` - `/api/game/corpses/*` and `/api/internal/corpses/*` endpoints
8. `websocket.py` - `/ws/game/*` WebSocket endpoint

**Helper Files to Create** (in `api/services/`):
1. `helpers.py` - Utility functions (distance calculation, stamina cost, armor durability, etc.)
2. `models.py` - Pydantic models (all request/response models)

**Final `api/main.py`** will contain ONLY:
- FastAPI app initialization
- Middleware setup (CORS)
- Static file mounting
- Router registration
- Lifespan context (startup/shutdown)
- ~100 lines instead of 5500+

#### Frontend Refactoring

**Components to Extract from Game.tsx**:

In `pwa/src/components/game/`:
1. `Compass.tsx` - Navigation compass with stamina costs
2. `LocationView.tsx` - Location description and image
3. `Surroundings.tsx` - NPCs, players, items, corpses, interactables
4. `InventoryPanel.tsx` - Inventory management
5. `EquipmentPanel.tsx` - Equipment slots
6. `CombatView.tsx` - Combat interface (PvE and PvP)
7. `ProfilePanel.tsx` - Player stats and info
8. `CraftingPanel.tsx` - Crafting interface
9. `DeathOverlay.tsx` - Death screen

**Shared hooks** (in `pwa/src/hooks/`):
1. `useWebSocket.ts` - WebSocket connection and message handling
2. `useGameState.ts` - Game state management
3. `useCombat.ts` - Combat state and actions

**Type definitions** (in `pwa/src/types/`):
1. `game.ts` - Game entities (Player, Location, Item, NPC, etc.)
2. `combat.ts` - Combat-related types
3. `websocket.ts` - WebSocket message types

**Final `Game.tsx`** will contain ONLY:
- Component composition
- State management coordination
- WebSocket message routing
- ~300-400 lines instead of 3300+

### 📋 Estimated File Count

**Before**:
- Backend: 1 massive file (5574 lines)
- Frontend: 1 massive file (3315 lines)
- Total: 2 files, ~9000 lines

**After**:
- Backend: ~15 files, average ~200-400 lines each
- Frontend: ~15 files, average ~100-300 lines each
- Total: ~30 files, all maintainable and focused

### 🎯 Benefits

1. **Easier to navigate** - Each file has a single responsibility
2. **Easier to test** - Isolated components and functions
3. **Easier to maintain** - Changes don't affect unrelated code
4. **Easier to understand** - Clear module boundaries
5. **Better IDE support** - Faster autocomplete, better error detection
6. **Team-friendly** - Multiple developers can work without conflicts

## Implementation Strategy

### Phase 1: Backend (4-5 hours)
1. Create all router files with endpoints
2. Create service/helper files
3. Extract Pydantic models
4. Refactor main.py to just registration
5. Test all endpoints still work

### Phase 2: Frontend (3-4 hours)
1. Create type definitions
2. Extract hooks
3. Create component files
4. Refactor Game.tsx to use components
5. Test all functionality still works

### Phase 3: TypeScript Configuration (30 minutes)
1. Create/update `tsconfig.json`
2. Add proper type definitions
3. Fix VSCode errors

### Phase 4: Testing & Documentation (1 hour)
1. Verify all features work
2. Update README with new structure
3. Create architecture diagram

## Questions Before Proceeding

1. **Should I continue with the full refactoring now?**
   - This will take significant time (8-10 hours of work)
   - Will create 30+ new files
   - Will require thorough testing

2. **Do you want me to do it all at once or in phases?**
   - All at once: Complete transformation
   - Phases: Backend first, then frontend, then testing

3. **Any specific preferences for file organization?**
   - Current plan follows standard FastAPI/React best practices
   - Open to adjustments

## Recommendation

I recommend doing this in **phases with testing after each**:
1. **Phase 1**: Backend refactoring (today) - Most critical, easier to test
2. **Phase 2**: Frontend refactoring (next session) - Can verify backend works first
3. **Phase 3**: TypeScript fixes (quick win)
4. **Phase 4**: Final testing and documentation

This approach:
- Allows for testing and validation at each step
- Reduces risk of breaking everything at once
- Gives you time to review and provide feedback
- Easier to roll back if issues arise

Would you like me to proceed with **Phase 1: Backend Refactoring** now?
