feat/bot-adapter
Реализован контракт /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>
Ника — Галерея & Аукцион
Сайт дизайнера Ники: галерея работ, аукцион, подписки, Telegram-интеграция.
Стек
- Backend: Node.js/Express (ESM), PostgreSQL 16
- Frontend: Next.js 14 App Router, TypeScript, Tailwind CSS
- Real-time: WebSocket (ws)
- Telegram: grammy
- Deploy: Docker Compose + Nginx + Let's Encrypt
Структура
nika-gallery/
├── backend/ # Express API (порт 4000)
├── frontend/ # Next.js (порт 3000)
├── db/ # schema.sql + seed.sql
├── nginx/ # nginx.conf
├── scripts/ # import-channel.mjs и утилиты
└── docker-compose.yml
Задачи флота агентов
| # | Задача | Статус | Блокирует |
|---|---|---|---|
| 1 | БД-схема + API-контракт | ✅ schema.sql готова | — |
| 2 | Backend scaffold + Auth | pending | 1 |
| 3 | Frontend scaffold | pending | 1 |
| 4 | Галерея: CRUD + медиа | pending | 2,3 |
| 5 | Аукцион: primary/secondary + WS | pending | 4 |
| 6 | Подписки + рассылка | pending | 2,3 |
| 7 | Социальный слой | pending | 4 |
| 8 | Уведомления владельцу | pending | 5,7 |
| 9 | Telegram-бот публикации | pending | 4 |
| 10 | Импорт из TG-канала | pending | 9 |
| 11 | Docker + деплой + SSL | pending | 2,3 |
Быстрый старт
cp .env.example .env
# отредактировать .env
docker compose up -d
Переменные окружения
Смотри .env.example
Связь с оператором
- Telegram: @Ya26_bot (chat_id 1113994683)
- Агент-ноутбук: Claude Code на ноутбуке Германа
Languages
TypeScript
51.2%
JavaScript
43.3%
PLpgSQL
3.6%
Dockerfile
1.1%
CSS
0.8%