# Image Platform Image Platform - отдельная площадка для управления изображениями, variants, PostgreSQL metadata и S3/Object Storage. ## Статус Сейчас создан базовый monorepo, dev-инфраструктура, NestJS backend с Swagger, чистый Vite React TS admin, Fastify gateway skeleton, Drizzle database package, shared queue/storage packages и worker skeleton. ## Целевая схема ```text client -> CDN optional -> Fastify gateway + L1 memory cache -> NestJS backend -> S3/Object Storage persistent variants -> generator/worker on miss -> RabbitMQ -> external imgproxy -> source/original image ``` `imgproxy` всегда считается внешним сервисом и подключается через `IMGPROXY_UPSTREAM`. ## Локальная разработка В Docker поднимается только базовая инфраструктура: - PostgreSQL - MinIO - MinIO bucket init - imgproxy dev instance - RabbitMQ Нодой запускается: - NestJS backend - React/Vite admin - Fastify gateway - worker Gateway уже добавлен как JS/Fastify skeleton. Сейчас `/images/*` возвращает `501`, пока не подключены DB/S3/imgproxy. ```bash cp .env.example .env pnpm install pnpm infra:up pnpm db:migrate pnpm infra:config pnpm backend:dev pnpm admin:dev pnpm gateway:dev pnpm worker:dev ``` Порты по умолчанию: | Сервис | URL | |---|---| | PostgreSQL | `localhost:5433` | | MinIO API | `http://localhost:9000` | | MinIO Console | `http://localhost:9001` | | imgproxy | `http://localhost:18080` | | RabbitMQ | `amqp://localhost:5672` | | RabbitMQ Management | `http://localhost:15672` | | Backend API | `http://localhost:3001/api` | | Swagger | `http://localhost:3001/docs` | | Admin | `http://localhost:5173` | | Gateway | `http://localhost:8888` | Если старый локальный `image-gateway` уже занимает `8888`, остановите его или задайте другой `GATEWAY_PORT` в `.env`. ## Документация - `docs/architecture.md` - целевая архитектура и ответственность компонентов. - `docs/development.md` - локальный dev flow. - `docs/data-model.md` - текущая Drizzle/PostgreSQL модель. - `docs/backend-contract-draft.md` - черновик будущего backend-контракта. - `docs/imgproxy-contract.md` - контракт с external imgproxy. - `docs/next-image-provider.md` - контракт custom provider для `next/image`.