Общий стек:
main: TS, React, Node (Fastify), MongoDb(mongoose), Tailwind CSS,
libs: Axios, Zustand , Tanstack Router, Tanstack Query, React Hook Form, zod, cheerio, shadcn/ui,
other: Docker, docker-compose, nginx, turborepo, eslint, prettier \
Скраппер/парсер собирает участников в одну таблицу с нескольних контестов. Плюс немного статитстики
Монорепо:
-
apps:
frontend
: Клиентская часть с самой таблицей и статистикойbackend
: кхм.. бекэнд .backend-gui
: Клиент для бека. Настройка контестов
-
packages:
ui
: Общие ui компоненты для frontend и backend-gui (shadncn/ui)
-
configs:
.htpasswd
: для basse auth backend-guimongo-init.js
: файл конфига первоначальной настройки для монго. Создает пользователя через которого бек будет подключаться.nginxGui.conf
: для backend-gui - включает base auth на nginx. Требуется наличие.htpasswd
рядомnginx.conf
: конфиг reverse-proxy перенаправляет запросы /api в бек контейнер и /gui в приложение backend-gui
Important
mongo-init.js
запускается только при первом запуске. Если забыли env файл то перезапустив контейнер он не сработает. Нужно будет очистить 'volume'
Подробноее описания для каждого приложения
Установка зависимостей. Запуск из рута монорепо. Установит зависимости для всех пакетов.
pnpm i
Запуск всех приложений (также из рута). Используется turborepo
pnpm run dev
Для запуска по отдельности либо запускать команду находясь в соотв папке либо через --filter
Пример запуск только бека
pnpm run dev --filter=@yatr/backend
Либо вручную заходя в соотв папку
cd app/backend
pnpm run dev
docker-compose.yaml
- основной файл
docker-compose.dev.yaml
- упрощенный файл только с монго и монго экспресс. Можно поднять локально все/необходимые приложения через pnpm
+ монго через этот файл как dev среда
сразу все запустить
docker-compose up
так же можно запустить по отдельности.
Important
Для frontend and backend-gui запускать билд из рута монорепо с передачей контекста .
т.к им необходимо иметь доступ к @repo/ui
docker build -t front-image -f ./apps/frontend/dockerfile .
для запуска через докер .env
должен быть в руте.
Для запуска локально через pnpm run dev
env должен быть в apps/backend
Для backend (назначения в Backend)
DATABASE_HOST=
DATABASE_PORT=
MONGO_BACKEND_USERNAME=
MONGO_BACKEND_PASSWORD=
MONGO_BACKEND_DATABASE=
SERVER_PORT=
SERVER_HOST=
SECRET=
API_KEY=
Для mongo
MONGO_INITDB_ROOT_USERNAME=
MONGO_INITDB_ROOT_PASSWORD=
MONGO_INITDB_DATABASE=
Для mongo-express
ME_WEB_USERNAME
и ME_WEB_PASSWORD
для аунтефикации через веб интерфейс
ME_CONFIG_MONGODB_ADMINUSERNAME=
ME_CONFIG_MONGODB_ADMINPASSWORD=
ME_CONFIG_MONGODB_URL=
ME_WEB_USERNAME=
ME_WEB_PASSWORD=