Frontend:
- apps/web (Vite+TS, TanStack Router/Query, shadcn/ui @cfdm/ui base-nova)
- 10 страниц в routes/_auth/, Recharts через shadcn Chart, lucide-react
- формы на RHF + Zod (FormSheet/FormField)
- удалены Tabler, Chart.js, react-router-dom
Backend (параллельный трек):
- apps/api (Fastify 5 + Drizzle + better-sqlite3)
- packages/db: Drizzle-схема и repositories по сущностям
- packages/shared: Zod-контракты
- роуты с валидацией и единым форматом ошибок { error: { code, message } }
- sync/backup — заглушки 501 (billmanager-адаптеры переносятся отдельно)
- legacy Express оставлен как runtime по умолчанию (RUNTIME=express)
Infra:
- Dockerfile multi-stage под pnpm workspaces
- .dockerignore и docker-compose обновлены под monorepo
Rules:
- удалены нерелевантные правила (rust, cloudflare, server/frontend-conventions)
- project-structure.mdc и AGENTS.md переписаны под monorepo
- frontend-shadcn.mdc, shadcn-ui-production.mdc, sqlite.mdc обновлены
Co-authored-by: Cursor <cursoragent@cursor.com>
27 lines
715 B
YAML
27 lines
715 B
YAML
# VPS Tracker: образ с GHCR + SQLite в ./data на хосте
|
||
services:
|
||
app:
|
||
image: ghcr.io/denozordec/vps-tracker:latest
|
||
pull_policy: always
|
||
ports:
|
||
- "3001:3001"
|
||
environment:
|
||
PORT: "3001"
|
||
# RUNTIME: "express" (по умолчанию, legacy) | "fastify" (новый стек)
|
||
RUNTIME: "express"
|
||
volumes:
|
||
- ./data:/app/data
|
||
|
||
# Раскомментируйте для локальной сборки вместо pull образа:
|
||
# app-build:
|
||
# build:
|
||
# context: .
|
||
# dockerfile: Dockerfile
|
||
# ports:
|
||
# - "3001:3001"
|
||
# environment:
|
||
# PORT: "3001"
|
||
# RUNTIME: "express"
|
||
# volumes:
|
||
# - ./data:/app/data
|