Abitly API / backend
Метадані
Section titled “Метадані”| Поле | Значення |
|---|---|
| Продукт | Abitly.org |
| Тип | Backend / API |
| Статус | 🟢 prod |
| Власник | @Vladbandurin |
Призначення
Section titled “Призначення”Окремий від Strapi backend: бізнес-логіка, авторизація (Google OAuth + JWT + Telegram), платежі Monobank, агрегація даних, BullMQ-черги, інтеграція з зовнішнім Tutor-сервісом, експорт MCP API (MCP_API_KEY) для внутрішніх агентів.
Репозиторій та рантайм
Section titled “Репозиторій та рантайм”| Репо | abitly-org/abitly-api-v2 (main) |
| Стек | NestJS · TypeORM · Postgres (pg) · BullMQ · @nestjs/jwt + passport · @nestjs/throttler · @nestjs/swagger · @willsoto/nestjs-prometheus · @nestjs-modules/mailer · @nestjs/schedule · @modelcontextprotocol/sdk |
| Хостинг — prod | AWS ECS Fargate · кластер abitly-prod-backend · 1 task · контейнер backend:6789 · ALB abitly-prod-shared |
| Хостинг — dev | AWS EC2 abitly-dev-backend (t4g.small). Redeploy — Lambda abitly-dev-backend-restart. |
| Container image | ECR abitly/backend:<commit-sha> (prod), abitly-dev/backend (dev) |
| Деплой prod | CodePipeline abitly-prod-backend (GitHub → CodeStarSourceConnection → CodeBuild → ECR → ECS). Деталі → deploy-pipeline. |
| Конфіг-redeploy | Lambda abitly-prod-ssm-redeploy слухає зміни SSM /abitly/prod/* і форсить ECS rolling update. |
| API URL | https://api.abitly.org |
| Внутрішній порт | 6789 |
| Postgres схема | abitly у DB abitly_prod_db (SSM /abitly/prod/backend/DB_SCHEMA) |
| Tutor service | зовнішній API https://tutor-api.abitly.org — окремий продукт цієї ж команди (не документується в цьому хабі) |
Залежності
Section titled “Залежності”- Залежить від: Postgres (shared, схема
TODO:) · Valkey (cache + BullMQ) · Typesense (search) · Strapi · Monobank Payments · Auth (Google + JWT + Telegram) · SMTP · зовнішній Tutor-сервіс - Від нього залежать: Abitly Web · Telegram bot · Telegram Mini App
Env-змінні
Section titled “Env-змінні”SSM /abitly/{env}/backend/ (~60 ключів). Сервіс не використовує ECS secrets: block — підтягує SSM сам через @nestjs/config. Список — у environments.
Категорії (тільки назви):
- БД:
DATABASE_URL,DB_HOST,DB_PORT,DB_USERNAME,DB_PASSWORD,DB_NAME,DB_SCHEMA,DB_SSL - Cache/queue (Valkey):
REDIS_URL,REDIS_HOST,REDIS_PORT,CACHE_TTL - JWT:
ACCESS_JWT_SECRET,ACCESS_JWT_TTL,REFRESH_JWT_SECRET,REFRESH_JWT_TTL,JWT_TEMP_SECRET,JWT_TEMP_TTL - Google OAuth:
GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET,GOOGLE_REDIRECT_URI - Email (SMTP):
SMTP_HOST,SMTP_PORT,SMTP_USER,SMTP_PASSWORD,SMTP_FROM,SMTP_SECURE - Strapi:
STRAPI_API_TOKEN,STRAPI_BASE_URL,STRAPI_WEBHOOK_SECRET - Telegram:
TELEGRAM_BOT_TOKEN,TELEGRAM_LOGGER_BOT_TOKEN,TELEGRAM_LOG_CHAT_ID - Платежі:
MONOBANK_TOKEN,SUBSCRIPTION_WEBHOOK_URL,PREMIUM_WEBHOOK_URL,TOKEN_PURCHASE_WEBHOOK_URL,SUBSCRIPTION_REDIRECT_URL,PREMIUM_REDIRECT_URL,TOKEN_PURCHASE_REDIRECT_URL - Frontend-links:
FRONT_URL,FRONT_AUTH_REDIRECT_URL,ACCOUNT_LINK_URL - Search:
SEARCH_ENGINE,TYPESENSE_HOST,TYPESENSE_PORT,TYPESENSE_PROTOCOL,TYPESENSE_API_KEY - Tutor:
TUTOR_BASE_URL,TUTOR_SERVICE_SECRET,TUTOR_REQUEST_TIMEOUT_MS - Rate limit (prod):
RATE_LIMIT_DEFAULT_TTL,RATE_LIMIT_DEFAULT_LIMIT,RATE_LIMIT_INCREASED_LIMIT,RATE_LIMIT_OFFERS_LIMIT - Інше:
ENCRYPTION_KEY,ADMIN_API_KEY,MCP_API_KEY,SWAGGER_ACCESS_PASSWORD,STAGE,NODE_ENV,PORT,DOMAIN,API_PUBLIC_URL,ALLOWED_METHODS,PROMETHEUS_PASSWORD,E2E_TEST_AUTH_ENABLED,ERROR_LOGGER_TYPE,SEND_OFFERS_UPDATE_NOTIFICATION_TOKEN
Ключові команди
Section titled “Ключові команди”npm run start:dev # NestJS hot-reloadnpm run build && npm run start:prodnpm run lintnpm run test # unitnpm run test:e2enpm run migration:generate # TypeORMnpm run migration:runnpm run migration:revertnpm run schema:log # SQL schema diffnpm run analyze:production # bundle sizeДеплой та відкат
Section titled “Деплой та відкат”- Code change: push → manual/external pipeline trigger → CodePipeline → ECR → ECS service update. Відкат — попередня task-definition revision.
- Config change:
aws ssm put-parameterна/abitly/prod/backend/*→ EventBridge → Lambdaabitly-prod-ssm-redeploy→ ECS rolling restart. Відкат конфігу — попередня версія параметра.
Деталі → deploy-pipeline, deploy-rollback.
Логи та моніторинг
Section titled “Логи та моніторинг”- ECS логи → CloudWatch
/ecs/abitly-prod-backend(TODO:). - Метрики Prometheus → Grafana на DO Droplet (observability).
- Помилки → Telegram-logger (без Sentry).
Типові проблеми
Section titled “Типові проблеми”- 5xx → service-down
- БД повільна / коннекшени → db-issues (⚠️ shared Postgres)
- Регресія після релізу → deploy-rollback
- Помилки платежів → Payments