Files
Flamy-Trade_svelte/README.md
T

4.5 KiB
Raw Blame History

Flamy Trade

Публичный frontend для trade.flamy.studio: лендинг, блог и исследовательский дашборд ML-прогнозов по крипторынку.

Проект построен на SvelteKit, Svelte 5 Runes, Tailwind CSS v4, TypeScript и lightweight-charts.

Требования

Node.js: >=24.0.0 <25
pnpm:    >=11.15.1 <12

В Windows PowerShell запускайте pnpm через pnpm.cmd, если выполнение .ps1-скриптов отключено.

Быстрый старт

pnpm install
pnpm dev

Локальный адрес по умолчанию:

http://localhost:5173

Команды

pnpm format        # автоформатирование
pnpm format:check  # проверка форматирования
pnpm lint          # ESLint
pnpm check         # Svelte + TypeScript
pnpm build         # production build
pnpm preview       # preview production build
pnpm audit         # аудит зависимостей

prepare намеренно выполняет svelte-kit sync без подавления ошибок. Если синхронизация SvelteKit падает, установка зависимостей тоже должна завершаться ошибкой.

Конфигурация

.env.example описывает production-настройки. Для сервера скопируйте его в .env и заполните значения без локальных заглушек.

Основные переменные:

PUBLIC_SITE_URL=https://trade.flamy.studio
PUBLIC_SITE_NAME=Flamy Trade
PUBLIC_SITE_DESCRIPTION=Публичная витрина ML-прогнозов для крипторынка.
PUBLIC_DASHBOARD_DATA_MODE=research-static

HOST=0.0.0.0
PORT=3000
ORIGIN=https://trade.flamy.studio
BODY_SIZE_LIMIT=1M
SHUTDOWN_TIMEOUT=15
APP_STOP_GRACE_PERIOD=20s

APP_IMAGE_REPOSITORY=registry.example.com/flamy-trade
APP_IMAGE_TAG=<git-sha>
BUILD_DATE=<utc-iso-date>
VCS_REF=<git-sha>

APP_HOST_IP=10.20.0.20
APP_PUBLISHED_PORT=18082
NGINX_IMAGE=nginxinc/nginx-unprivileged:1.30.4-alpine-perl@sha256:36fa38fb8f34faba45e7e1857644d6561f2faf45e7ce6b15e97d1a2a1682a0cd

PUBLIC_DASHBOARD_DATA_MODE=research-static означает, что дашборд показывает исследовательские синтетические данные. Это production-поведение текущего публичного этапа, а не интеграция с реальным торговым API.

Структура

src/lib/blog/posts.ts              # типизированные статьи блога
src/lib/config/site.ts             # единая конфигурация сайта, canonical и metadata
src/lib/data/dashboard.ts          # provider данных дашборда
src/lib/stores/chartStore.ts       # типы графика и research-static генератор
src/lib/components/Chart.svelte    # компонент lightweight-charts
src/routes/healthz/+server.ts      # health endpoint
src/routes/robots.txt/+server.ts   # runtime robots.txt
src/routes/sitemap.xml/+server.ts  # runtime sitemap
docker/nginx/default.conf          # nginx server config
docker/nginx/includes              # общие nginx include-файлы
docs/deployment.md                 # runbook развёртывания

Production

Production-схема:

Internet -> Caddy -> 10.20.0.20:18082 -> nginx -> app:3000

Публикуется только nginx. Node-приложение доступно только во внутренней Docker-сети. Nginx запускается через unprivileged image с cap_drop: ALL, read_only и no-new-privileges.

Подробный порядок развёртывания, Caddy block, smoke-check и rollback описаны в docs/deployment.md.

Зависимости

Renovate закрепляет версии и digest Docker-образов, а также ждёт 3 дня перед обновлением свежих релизов. TypeScript 6.x является осознанным compatibility hold до обновления peer constraints в SvelteKit/typescript-eslint.

Что не входит в текущий этап

  • ML-runtime;
  • реальный торговый API;
  • S3;
  • база данных;
  • Redis;
  • Telegram egress;
  • публикация ML API через Caddy.