Files
image-platform/README.md
S.Gromov bcadb85a83 feat: добавить базовые сервисы image-platform
- добавлены backend, admin, gateway и worker skeleton
- добавлены Drizzle schema, database package и initial migration
- добавлены shared packages для RabbitMQ topology и S3 helpers
- обновлены dev-инфраструктура, env example, scripts и dependencies
- обновлена документация под versioned image URLs и read-through flow
2026-05-05 09:59:21 +03:00

81 lines
2.6 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.

# 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`.