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