Фронтенд-приложение сервера SilverLand.
Проект использует методологию Feature-Sliced Design (FSD) для организации кода:
src/
├── app/ # Инициализация приложения, глобальные провайдеры, роутинг
├── pages/ # Страницы приложения
├── widgets/ # Композитные блоки для страниц
├── features/ # Фичи бизнес-логики
├── entities/ # Бизнес-сущности
└── shared/ # Переиспользуемый код (UI, utils, API)
Соблюдение правил композиции слоёв, слайсов и сегментов обеспечивается конфигурацией eslint.
Path aliases настроены для удобного импорта: @/app/*, @/entities/*, @/features/*, @/pages/*, @/shared/*, @/widgets/*.
- React 18.2 - UI библиотека
- TypeScript 5.3 - типизация
- Vite 6.3 - бандлер и dev-сервер
- MobX 6.13 - state management
- React Router 6.22 - маршрутизация
- Axios 1.6 - HTTP клиент
- Sass - препроцессор стилей
- Vitest - unit-тестирование
- Testing Library - тестирование React компонентов
- Storybook 8.4 - разработка и документация UI компонентов
- Loki - визуальное регрессионное тестирование
- ESLint - линтинг JavaScript/TypeScript
- Stylelint - линтинг стилей
- Prettier - форматирование кода
- Knip - поиск неиспользуемого кода
- Dependency Cruiser - анализ зависимостей
- Sentry - мониторинг ошибок
- Swagger TypeScript API - автогенерация типов из OpenAPI спецификации
- Git hooks - автоматическая проверка кода перед коммитом
- SSR-ready конфигурация с прокси для API запросов
- Автоматическая генерация типов из Swagger документации
- Визуальное регрессионное тестирование с отчетами
- Граф зависимостей для контроля архитектуры
- Интеграция с Sentry для мониторинга продакшена
- Строгий TypeScript с noImplicitAny
- Автоматические проверки через lint-staged и git hooks
- Node.js 18+
- pnpm 9.10+ (рекомендуется) или npm
- Клонировать репозиторий:
git clone [email protected]:SilverLandMc/minecraft-silver-frontend.git
cd minecraft-silver-frontend- Установить зависимости:
npm install
# или
pnpm install- (Опционально) Создать файл переменных окружения в папке
environments/.env:
SENTRY_DSN=https://...ingest.sentry.io/...
STAND_NAME=Имя стенда
RELEASE_NAME=Версия релиза
ENV_NAME=Имя окружения- Запустить dev-сервер:
npm run startПриложение будет доступно по адресу http://localhost:3000
npm run start- запуск dev-сервераnpm run build- продакшен сборкаnpm run storybook- запуск Storybook на порту 3010
npm run test- запуск unit-тестовnpm run test:ui- запуск визуальных тестовnpm run test:ui:approve- подтверждение изменений визуальных тестов
npm run lint- проверка всех линтеров (ESLint, Stylelint, TypeScript)npm run eslint:lint- проверка ESLintnpm run stylelint:lint- проверка Stylelintnpm run typescript:lint- проверка TypeScriptnpm run knip- поиск неиспользуемого кода
npm run typescript:swagger- генерация типов из Swaggernpm run generateDependenciesGraph- генерация графа зависимостейnpm run depcruise:archi- анализ архитектуры проекта