Вливает работу от 5-6 августа. main отставал на 4 коммита, а деплой настроен на main — без слияния автодеплой раскатал бы каркас без клуба и авторизации.
Реализован контракт /api/bot/* из servaki-webhub-bot/SPEC.md:
- GET /api/bot/health (публичный) -> {ok, site}
- GET /api/bot/publications?status=&limit= -> список works
- POST /api/bot/publications {title,body,media[]} -> черновик works -> {id}
- POST /api/bot/publications/:id/publish -> published -> {id,url}
- DELETE /api/bot/publications/:id -> удаление (media cascade)
- POST /api/bot/materials (multipart file) -> media -> {id,url}
Аутентификация Authorization: Bearer <BOT_API_TOKEN> (middleware/botAuth,
сравнение постоянного времени; 503 без токена в env, 401 при несовпадении).
Маппинг: публикация<->works, материал<->media. Миграция bot_adapter.sql
разрешает media.type='file'. multer 2.x.
Фикс Яндекс-redirect и домена: nika-gallery.ru -> 1nika.ru в .env.example
(YANDEX_REDIRECT_URI, FRONTEND_URL, SITE_URL, NEXT_PUBLIC_*, SMTP_USER) и
nginx server_name. Секреты не в git (client_id/secret - на Я.Диске).
Добавлен docs/DEPLOY.md (VPS runbook: DNS, .env, SSL, миграции, бот).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Каркас витрины дизайнера Ники: главная (hero + сетка галереи),
страница работы (детали + место под аукцион), список аукционов,
подписка-заглушка. Клиент к backend /api с graceful-фолбэком на
демо-работы при недоступном API. Standalone-сборка + Dockerfile.
Сборка npm run build и tsc --noEmit проходят.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>