- Игровой движок - Описание игрового движка
- Сценарий игры - Разработка сценария игры
- Утечки памяти - Утечки памяти
- Защита от XSS - Защита от XSS
-
Используем Ant Design
-
Используем css-модули (создаем файлы
Component.module.css) или инлайн стили -
Если вам нужны брейкпоинты для медиа-запросов, используйте их из файла
@/helpers/breakpoints.css:@import '@/helpers/breakpoints.css'; @media (--sm) { .component { /* styles */ } }
-
Храним компоненты в папке
src/components, страницы вsrc/pages, общие типы вsrc/typesи т.д. по смыслу -
Экспортируем компоненты по умолчанию
-
Желательно установить плагины Prettier, Eslint, Stylelint для своей IDE
-
При коммите запускается prettier, stylelint, eslint, проверка типов. Нужно исправить их ошибки для успешного коммита
-
Для генерации апи и хуков RTK Query запустить
yarn generate-api
Ветка dev – основная рабочая ветка, main – продакшн ветка
- Клонируем проект
- Создаем новую ветку от
dev(видаfeature/ECH-6илиfix/ECH-01), туда коммитим - Когда все готово создаем PR из своей ветки в
dev - Прикрепляем PR к задаче в Linear, задачу перемещаем в колонку
Needs review - Проходим ревью
- Вливаем в ветку
dev(через squash & merge) - Сообщаем остальным, что задача вылита в
dev
- Установите Docker Desktop для вашей ОС
- Убедитесь, что Docker запущен и работает
- Создайте файл
.envв корне проекта:yarn bootstrap
- Замените
POSTGRES_HOSTв.env.localнаlocalhost
Development режим (с hot reload):
docker compose -f docker-compose.dev.yml up --buildИли поднять только базу в докере:
docker compose -f docker-compose.dev.yml up postgres -d --build
yarn devProduction режим:
docker compose up --build -d-
Дождитесь завершения сборки (может занять несколько минут при первом запуске)
-
Проверьте статус контейнеров:
# Для development docker compose -f docker-compose.dev.yml ps # Для production docker compose ps
-
Дождитесь, пока все сервисы станут здоровыми (health check пройдет успешно)
После запуска проверьте доступность сервисов:
- Клиент: http://localhost:${CLIENT_PORT}
- Сервер API: http://localhost:${SERVER_PORT}
После успешного запуска приложение будет доступно по адресам:
- Клиент: http://localhost:${CLIENT_PORT}
- Сервер API: http://localhost:${SERVER_PORT}
- База данных: localhost:${POSTGRES_PORT}
# Просмотр логов всех сервисов (dev)
docker compose -f docker-compose.dev.yml logs -f
# Просмотр логов конкретного сервиса (prod)
docker compose logs -f postgres
docker compose logs -f server
docker compose logs -f client
# Остановка всех сервисов
docker compose down # production
docker compose -f docker-compose.dev.yml down # development
# Перезапуск конкретного сервиса
docker compose restart postgres
# Подключение к базе данных
docker compose exec postgres psql -U ${POSTGRES_USER} -d ${POSTGRES_DB}
# Полная очистка (удалит все данные БД)
docker compose down -v- Если порты заняты: Измените значения
CLIENT_PORT,SERVER_PORT,POSTGRES_PORTв файле.env - Если контейнеры не запускаются: Проверьте логи командой
docker compose logs - Если нужно пересобрать образы: Выполните
docker compose up --build -d - Если нужно сбросить данные БД: Выполните
docker compose down -vи запустите заново - Если health check не проходит: Подождите немного, сервисы могут инициализироваться до 1-2 минут
- Убедитесь что у вас установлен
nodeиdocker - Выполните команду
yarn bootstrap- это обязательный шаг, без него ничего работать не будет :)
Для локальной разработки нужно запустить только PostgreSQL контейнер:
docker compose up postgres -dПосле запуска базы данных выполните одну из команд:
- Запуск всего приложения:
yarn dev - Только клиент:
yarn dev --scope=client - Только сервер:
yarn dev --scope=server
После запуска проверьте доступность сервисов:
- Клиент: http://localhost:${CLIENT_PORT}
- Сервер API: http://localhost:${SERVER_PORT}
- База данных: localhost:${POSTGRES_PORT}
# Остановка базы данных
docker compose down postgres
# Просмотр логов базы данных
docker compose logs -f postgres
# Подключение к базе данных
docker compose exec postgres psql -U ${POSTGRES_USER} -d ${POSTGRES_DB}Форматировать Caddyfile:
docker run --rm -v "$PWD/Caddyfile:/etc/caddy/Caddyfile" \
caddy:2 caddy fmt --overwrite /etc/caddy/CaddyfileПроверить адаптацию:
docker run --rm -v "$PWD/Caddyfile:/etc/caddy/Caddyfile" \
caddy:2 caddy adapt --config /etc/caddy/CaddyfileПерезагрузить запущенный контейнер:
Dev:
docker compose -f docker-compose.dev.yml exec caddy \
caddy reload --config /etc/caddy/CaddyfileProd:
docker compose exec caddy \
caddy reload --config /etc/caddy/CaddyfileВ этом проекте используется monorepo на основе lerna
Чтобы добавить зависимость для клиента
yarn lerna add {your_dep} --scope client
Для сервера
yarn lerna add {your_dep} --scope server
И для клиента и для сервера
yarn lerna add {your_dep}
Если вы хотите добавить dev зависимость, проделайте то же самое, но с флагом dev
yarn lerna add {your_dep} --dev --scope server
Для клиента используется react-testing-library
yarn test
yarn lint
yarn format
yarn build
И чтобы посмотреть что получилось
yarn preview --scope client
yarn preview --scope server
В проекте используется lefthook