Files
Flamy-Trade_svelte/README.md
T
2026-07-20 04:14:24 +05:00

4.0 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         # аудит зависимостей

pnpm outdated может показывать @types/node 26.x и TypeScript 7.x. Это не ошибка текущего стека: проект закреплён на Node 24 LTS, а @sveltejs/kit и typescript-eslint на текущих версиях требуют TypeScript <6.1.

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

Основные изменяемые значения вынесены в .env.example.

Публичные значения сайта:

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

Runtime-переменные SvelteKit adapter-node:

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

Docker Compose:

APP_HOST_IP=10.20.0.20
APP_PUBLISHED_PORT=18082
APP_IMAGE_TAG=<git-sha>

Структура

src/lib/blog/posts.ts            # статические статьи блога
src/lib/config/site.ts           # единая конфигурация сайта и canonical URL
src/lib/stores/chartStore.ts     # типы графика и демонстрационный provider
src/lib/components/Chart.svelte  # lightweight-charts компонент
src/routes/healthz/+server.ts    # health endpoint
src/routes/sitemap.xml/+server.ts # sitemap
docker/nginx/default.conf        # project nginx
docs/deployment.md               # runbook развёртывания

Данные дашборда

Текущий provider в chartStore.ts генерирует демонстрационные данные. Он не является реальным торговым API и не меняет контракт будущего backend.

Ожидаемая форма ChartData:

type ChartData = {
	candles: Array<{ time: number; open: number; high: number; low: number; close: number }>;
	prediction: Array<{ time: number; value: number }>;
	signal: {
		direction: 'long' | 'short';
		confidence: number;
		entry: number;
		tp: number;
		sl: number;
	};
	currentPrice: number;
	change24h: number;
	change24hPct: number;
};

Блог

Статьи хранятся как типизированные блоки, а не как HTML-строки. Это позволяет рендерить контент без {@html} и без отдельной санитаризации.

Production

Production-сборка рассчитана на схему:

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

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

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

Пока не подключаются:

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