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

134 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Flamy Trade
Публичный frontend для `trade.flamy.studio`: лендинг, блог и демонстрационный дашборд ML-прогнозов по крипторынку.
Проект построен на SvelteKit, Svelte 5 Runes, Tailwind CSS v4, TypeScript и `lightweight-charts`.
## Требования
```text
Node.js: >=24.0.0 <25
pnpm: >=11.15.1 <12
```
В Windows PowerShell запускайте pnpm через `pnpm.cmd`, если выполнение `.ps1`-скриптов отключено.
## Быстрый старт
```bash
pnpm install
pnpm dev
```
Локальный адрес по умолчанию:
```text
http://localhost:5173
```
## Команды
```bash
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`.
Публичные значения сайта:
```bash
PUBLIC_SITE_URL=https://trade.flamy.studio
PUBLIC_SITE_NAME=Flamy Trade
PUBLIC_SITE_DESCRIPTION=Публичная витрина ML-прогнозов для крипторынка.
```
Runtime-переменные SvelteKit adapter-node:
```bash
HOST=0.0.0.0
PORT=3000
ORIGIN=https://trade.flamy.studio
BODY_SIZE_LIMIT=1M
SHUTDOWN_TIMEOUT=15
```
Docker Compose:
```bash
APP_HOST_IP=10.20.0.20
APP_PUBLISHED_PORT=18082
APP_IMAGE_TAG=<git-sha>
```
## Структура
```text
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`:
```typescript
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-сборка рассчитана на схему:
```text
Internet -> Caddy -> 10.20.0.20:18082 -> nginx -> app:3000
```
Подробный порядок развёртывания, Caddy block, smoke-check и rollback описаны в [docs/deployment.md](docs/deployment.md).
## Что не входит в текущий этап
Пока не подключаются:
- ML-runtime;
- реальный API;
- S3;
- база данных;
- Redis;
- Telegram egress;
- публикация ML API через Caddy.