Категория	Файлов
API Types	14
API Endpoints	14
Stores	9
Hooks	9
Common Components	13
Layout Components	5
Auth Components	4
Match Components	7
Scoreboard Components	4
Services Components	3
Training Components	6
Analytics Components	6
Logs Components	5
Team Components	4
Profile Components	3
Pages	20
Utils	5
ИТОГО	145+ файлов




src/
├── api/ # API-клиент
│ ├── axios.ts # Настройка Axios instance, interceptors, base URL, refresh token
│ ├── endpoints/
│ │ ├── auth.api.ts # login, register, logout, refreshToken, getMe
│ │ ├── users.api.ts # getUser, updateProfile, getUserStats, getUserAchievements
│ │ ├── teams.api.ts # createTeam, joinTeam, leaveTeam, getTeam, getTeamMembers, inviteToTeam
│ │ ├── matches.api.ts # createMatch, getMatch, listMatches, startMatch, stopMatch, getMatchResults
│ │ ├── rounds.api.ts # getRound, listRounds, getRoundEvents
│ │ ├── services.api.ts # listServices, getService, uploadService, validateService, rateService
│ │ ├── scoreboard.api.ts # getScoreboard, getScoreHistory, getTeamScore
│ │ ├── flags.api.ts # submitFlag, getFlagHistory
│ │ ├── logs.api.ts # getLogs, getEventTimeline, getReplay
│ │ ├── training.api.ts # getTracks, getTrack, startExercise, submitExercise, getProgress
│ │ ├── analytics.api.ts # getTeamAnalytics, getPlayerAnalytics, getMatchAnalytics, getAIRecommendations
│ │ ├── admin.api.ts # adminGetUsers, adminCreateMatch, adminManageServices, adminGetSystemStats
│ │ └── notifications.api.ts # getNotifications, markRead, getUnreadCount
│ ├── websocket.ts # WebSocket подключение: scoreboard updates, round events, log stream, notifications
│ └── types/ # Все TypeScript типы и интерфейсы
│ ├── auth.types.ts # User, LoginRequest, RegisterRequest, AuthResponse, TokenPair
│ ├── team.types.ts # Team, TeamMember, TeamInvite, TeamRole
│ ├── match.types.ts # Match, MatchConfig, MatchStatus, MatchResult, ScoringPolicy
│ ├── round.types.ts # Round, RoundEvent, RoundStatus
│ ├── service.types.ts # Service, ServiceCategory, ServiceStatus, CheckerResult, ServiceReview
│ ├── scoreboard.types.ts # ScoreboardEntry, ScoreHistory, TeamScore, ScoreBreakdown
│ ├── flag.types.ts # Flag, FlagSubmission, FlagStatus
│ ├── log.types.ts # LogEntry, LogLevel, EventType, TimelineEvent, ReplayFrame
│ ├── training.types.ts # Track, Exercise, ExerciseResult, Progress, Skill, Role
│ ├── analytics.types.ts # TeamAnalytics, PlayerAnalytics, MatchAnalytics, AIRecommendation
│ └── common.types.ts # PaginatedResponse, ApiError, SortOrder, FilterParams
│
├── store/ # Zustand stores
│ ├── authStore.ts # user, tokens, isAuthenticated, login(), logout(), refreshToken()
│ ├── matchStore.ts # currentMatch, matches, rounds, matchStatus
│ ├── scoreboardStore.ts # scores, history, realtime updates via websocket
│ ├── serviceStore.ts # services, filters, categories, selected service
│ ├── logStore.ts # logs, timeline, replay state, filters
│ ├── teamStore.ts # currentTeam, members, invites
│ ├── trainingStore.ts # tracks, progress, currentExercise
│ ├── notificationStore.ts # notifications, unreadCount
│ └── uiStore.ts # theme, sidebar state, modals, loading states
│
├── hooks/ # Кастомные хуки
│ ├── useAuth.ts # Авторизация, проверка ролей, protected routes
│ ├── useWebSocket.ts # Подключение и подписки на WS-каналы
│ ├── useScoreboard.ts # Real-time scoreboard с WS
│ ├── useMatchTimer.ts # Таймер текущего раунда, countdown
│ ├── useLogs.ts # Подписка на стрим логов, фильтрация
│ ├── useReplay.ts # Управление replay: play, pause, seek, speed
│ ├── usePagination.ts # Пагинация для таблиц
│ ├── useDebounce.ts # Debounce для поиска
│ └── useNotifications.ts # Real-time уведомления
│
├── pages/ # Страницы
│ ├── auth/
│ │ ├── LoginPage.tsx
│ │ ├── RegisterPage.tsx
│ │ └── ForgotPasswordPage.tsx
│ ├── dashboard/
│ │ └── DashboardPage.tsx # Обзор: активные матчи, прогресс обучения, последние результаты, уведомления
│ ├── matches/
│ │ ├── MatchListPage.tsx # Список матчей: тренировочные, турнирные, скримы
│ │ ├── MatchDetailPage.tsx # Детали матча: scoreboard, раунды, события
│ │ ├── MatchLobbyPage.tsx # Лобби перед началом: настройки, команды, сервисы
│ │ ├── MatchLivePage.tsx # Живой матч: scoreboard, таймер, логи, статусы сервисов
│ │ └── MatchResultPage.tsx # Результаты: итоговый scoreboard, статистика, replay
│ ├── scoreboard/
│ │ └── ScoreboardPage.tsx # Полный scoreboard с графиками, фильтрами, историей по раундам
│ ├── services/
│ │ ├── ServiceCatalogPage.tsx # Каталог сервисов: поиск, фильтры, категории, рейтинг
│ │ ├── ServiceDetailPage.tsx # Карточка сервиса: описание, стек, уязвимости, отзывы, версии
│ │ ├── ServiceUploadPage.tsx # Загрузка нового сервиса: форма, валидация, превью
│ │ └── ServiceValidationPage.tsx # Статус валидации загруженного сервиса
│ ├── teams/
│ │ ├── TeamPage.tsx # Страница команды: участники, роли, история матчей
│ │ ├── TeamSettingsPage.tsx # Настройки команды: название, приглашения, роли
│ │ └── TeamSearchPage.tsx # Поиск команды для вступления
│ ├── training/
│ │ ├── TrainingHubPage.tsx # Обучение: все треки, прогресс, рекомендации
│ │ ├── TrackDetailPage.tsx # Конкретный трек: список упражнений, прогресс, описание роли
│ │ ├── ExercisePage.tsx # Выполнение упражнения: задание, терминал, подсказки, сдача
│ │ └── SkillMapPage.tsx # Карта навыков: что освоено, что осталось, рекомендации
│ ├── analytics/
│ │ ├── TeamAnalyticsPage.tsx # Аналитика команды: сильные/слабые стороны, тренды, сравнение
│ │ ├── PlayerAnalyticsPage.tsx # Персональная аналитика: навыки, прогресс, роли
│ │ ├── MatchAnalyticsPage.tsx # Аналитика матча: timeline, heatmap атак, AI-разбор
│ │ └── ReplayPage.tsx # Replay матча: таймлайн, события, графики, покадровый просмотр
│ ├── logs/
│ │ ├── LogViewerPage.tsx # Просмотр логов: фильтры, поиск, real-time стрим
│ │ └── EventTimelinePage.tsx # Таймлайн событий матча: визуальная шкала с событиями
│ ├── profile/
│ │ ├── ProfilePage.tsx # Профиль пользователя: статистика, достижения, история
│ │ └── SettingsPage.tsx # Настройки: аватар, пароль, уведомления, API-ключи
│ ├── admin/
│ │ ├── AdminDashboardPage.tsx # Админ-панель: системная статистика, активные матчи
│ │ ├── AdminUsersPage.tsx # Управление пользователями
│ │ ├── AdminMatchesPage.tsx # Управление матчами: создание, мониторинг, остановка
│ │ ├── AdminServicesPage.tsx # Модерация сервисов: очередь валидации, утверждение
│ │ └── AdminSystemPage.tsx # Системные настройки: конфигурация, health, метрики
│ ├── seasons/
│ │ ├── SeasonListPage.tsx # Список сезонов и лиг
│ │ └── SeasonDetailPage.tsx # Детали сезона: рейтинг, расписание, результаты
│ └── NotFoundPage.tsx
│
├── components/ # Компоненты
│ ├── layout/
│ │ ├── AppLayout.tsx # Основной layout: sidebar + header + content
│ │ ├── Sidebar.tsx # Боковое меню с навигацией и ролевыми секциями
│ │ ├── Header.tsx # Верхняя панель: поиск, уведомления, профиль, таймер матча
│ │ ├── Footer.tsx
│ │ └── MobileNav.tsx # Мобильная навигация
│ ├── auth/
│ │ ├── LoginForm.tsx
│ │ ├── RegisterForm.tsx
│ │ ├── ProtectedRoute.tsx # Обёртка для защищённых роутов
│ │ └── RoleGuard.tsx # Проверка роли пользователя для доступа
│ ├── match/
│ │ ├── MatchCard.tsx # Карточка матча в списке
│ │ ├── MatchTimer.tsx # Таймер раунда / матча
│ │ ├── MatchStatusBadge.tsx # Статус матча: lobby, running, finished
│ │ ├── RoundIndicator.tsx # Индикатор текущего раунда
│ │ ├── ServiceStatusGrid.tsx # Сетка статусов сервисов всех команд
│ │ ├── FlagSubmitForm.tsx # Форма отправки флага
│ │ └── MatchConfigForm.tsx # Форма настройки нового матча
│ ├── scoreboard/
│ │ ├── ScoreboardTable.tsx # Таблица scoreboard с сортировкой
│ │ ├── ScoreChart.tsx # График изменения очков по раундам
│ │ ├── TeamScoreCard.tsx # Карточка очков команды
│ │ └── ScoreBreakdown.tsx # Разбивка очков: attack / defense / SLA
│ ├── services/
│ │ ├── ServiceCard.tsx # Карточка сервиса в каталоге
│ │ ├── ServiceFilter.tsx # Фильтры: категория, сложность, стек, рейтинг
│ │ ├── ServiceUploadForm.tsx # Форма загрузки сервиса
│ │ ├── ServiceReviewCard.tsx # Отзыв о сервисе
│ │ ├── ServiceStatusIndicator.tsx # Индикатор статуса checker'а
│ │ └── ServiceVersionHistory.tsx # История версий сервиса
│ ├── training/
│ │ ├── TrackCard.tsx # Карточка учебного трека
│ │ ├── ExerciseCard.tsx # Карточка упражнения
│ │ ├── ProgressBar.tsx # Прогресс-бар обучения
│ │ ├── SkillRadarChart.tsx # Радарная диаграмма навыков
│ │ ├── RoleBadge.tsx # Бейдж роли: attacker, defender, analyst и т.д.
│ │ └── HintAccordion.tsx # Аккордеон с подсказками (постепенное раскрытие)
│ ├── analytics/
│ │ ├── AnalyticsCard.tsx # Карточка метрики
│ │ ├── TeamComparisonChart.tsx # Сравнение команд
│ │ ├── AttackHeatmap.tsx # Heatmap атак по сервисам и раундам
│ │ ├── SLAChart.tsx # График SLA по сервисам
│ │ ├── AIRecommendationCard.tsx # Карточка AI-рекомендации
│ │ └── PerformanceTrend.tsx # Тренд производительности
│ ├── logs/
│ │ ├── LogStream.tsx # Real-time стрим логов
│ │ ├── LogEntry.tsx # Одна запись лога
│ │ ├── LogFilter.tsx # Фильтры логов: тип, уровень, сервис, команда
│ │ ├── EventTimeline.tsx # Визуальный таймлайн событий
│ │ └── ReplayControls.tsx # Кнопки управления replay: play, pause, speed, seek
│ ├── team/
│ │ ├── TeamMemberCard.tsx # Карточка участника команды
│ │ ├── TeamInviteForm.tsx # Форма приглашения в команду
│ │ ├── TeamRoleSelector.tsx # Выбор роли в команде
│ │ └── TeamMatchHistory.tsx # История матчей команды
│ ├── profile/
│ │ ├── AchievementBadge.tsx # Бейдж достижения
│ │ ├── ProfileStats.tsx # Статистика профиля
│ │ └── ActivityFeed.tsx # Лента активности
│ └── common/
│ ├── DataTable.tsx # Универсальная таблица с сортировкой, пагинацией, фильтрами
│ ├── SearchInput.tsx # Поиск с debounce
│ ├── ConfirmDialog.tsx # Диалог подтверждения
│ ├── EmptyState.tsx # Заглушка "нет данных"
│ ├── ErrorBoundary.tsx # Обработка ошибок
│ ├── LoadingSpinner.tsx
│ ├── LoadingSkeleton.tsx # Скелетоны для загрузки
│ ├── StatusBadge.tsx # Универсальный бейдж статуса
│ ├── CopyButton.tsx # Кнопка копирования
│ ├── ThemeToggle.tsx # Переключатель темы
│ ├── Breadcrumbs.tsx
│ ├── Countdown.tsx # Универсальный countdown-таймер
│ └── MarkdownRenderer.tsx # Рендер markdown для описаний
│
├── router/
│ └── index.tsx # Все роуты, lazy loading, protected routes, role-based access
│
├── utils/
│ ├── formatters.ts # Форматирование дат, чисел, длительности
│ ├── validators.ts # Вспомогательные валидаторы
│ ├── constants.ts # Константы: роли, статусы, категории сервисов, уровни логов
│ ├── helpers.ts # Утилиты
│ └── colors.ts # Цветовая палитра для команд, статусов, графиков
│
├── styles/
│ └── globals.css # Tailwind base + кастомные стили, тёмная тема
│
├── App.tsx
├── main.tsx
└── vite-env.d.ts