fwo-tg/
├── server/ # @fwo/server
│ ├── api/ # DB-операции (character, clan, item, invoice...)
│ ├── arena/ # Игровая логика
│ │ ├── CharacterService/ # Обёртка над персонажем (inventory, attributes, resources...)
│ │ ├── Constuructors/ # Базовые классы магий, умений, защиты
│ │ ├── magics/ # Конкретные магии (eclipse, glitch, madness...)
│ │ ├── skills/ # Умения
│ │ ├── passiveSkills/ # Пассивные навыки
│ │ ├── effects/ # Эффекты (stun, asleep...)
│ │ ├── GameService.ts # Игровой цикл, управление боем
│ │ ├── PlayersService/ # Игроки внутри боя (PlayerService, PlayerAffects)
│ │ ├── MatchMakingService.ts
│ │ ├── TowerService/ # Башня
│ │ └── ForestService/ # Лес
│ ├── bot/ # Telegram бот (старт, платежи, кланы)
│ ├── helpers/ # Вспомогательные функции (login, game, tower, forest)
│ ├── models/ # Mongoose схемы (character, item, clan, game...)
│ ├── server/ # Hono роуты + WebSocket
│ │ ├── character.ts # Роуты персонажа
│ │ ├── middlewares/ # userMiddleware, characterMiddleware
│ │ └── ws/ # WebSocket обработчики (character, lobby, game, tower, forest)
│ ├── data/ # Статические данные (профессии, предметы)
│ ├── cli/ # CLI скрипты (миграции, сбросы)
│ └── utils/ # Утилиты
├── client/ # @fwo/client
│ ├── api/ # API-клиент (типизированный Hono RPC)
│ ├── modules/ # Модули (character, lobby, game, settings, clan, market...)
│ │ └── */store/ # Zustand сторы модуля
│ ├── components/ # Общие компоненты (Button, Card, AppLayout, ProtectedRoute)
│ ├── hooks/ # Общие хуки
│ ├── hocs/ # HOC (withSettingsButton)
│ ├── context/ # React контексты (socket)
│ └── constants/ # Константы (классы персонажей, магии)
├── shared/ # @fwo/shared
│ ├── character/ # Типы Character, CharacterAttributes, CharacterClass
│ ├── item/ # Типы Item, ItemWear, ItemComponent
│ ├── clan/ # Типы Clan
│ └── actions/ # ActionKey, OrderType, GameType
└── docker-compose.yml # MongoDB + приложение
Клиент: App → router → ProtectedRoute → middleware (WebSocket)
→ loader (GET /character)
→ setCharacter в Zustand
→ ProtectedRouteGuards → дети
Клиент: client.character.$get() ──→ Hono RPC (типизированный)
Сервер: userMiddleware → characterMiddleware → handler → CharacterService
Клиент: socket.emit('lobby:start', ...)
Сервер: ws/lobby.ts → MatchMakingService → GameService → PlayersService