Abitly Web (frontend)
Метадані
Section titled “Метадані”| Поле | Значення |
|---|---|
| Продукт | Abitly.org |
| Тип | Frontend (Next.js SSR) |
| Статус | 🟢 prod |
| Власник | @Vladbandurin |
Призначення
Section titled “Призначення”Веб-інтерфейс Abitly.org — пошук ЗВО/спеціальностей, контент зі Strapi, особистий кабінет, інтеграція з Abitly API та Studsearch backend (cross-product поіск).
Репозиторій та рантайм
Section titled “Репозиторій та рантайм”| Репо | abitly-org/abitly-frontend-v2 (main) |
| Стек | Next.js · React · Radix UI · TanStack Query/Table · React Hook Form + Zod · nivo (charts) · @react-pdf-viewer |
| Хостинг — prod | AWS ECS Fargate · кластер abitly-prod-frontend · 1 task · контейнер frontend:3000 · ALB abitly-prod-shared |
| Хостинг — dev | AWS Amplify abitly-dev-frontend (d3sx9l6zmir3cj, WEB_COMPUTE = Next.js SSR) |
| Container image | ECR 952854879948.dkr.ecr.eu-central-1.amazonaws.com/abitly/frontend:<commit-sha> |
| Деплой prod | CodePipeline abitly-prod-frontend (source — GitHub через CodeStarSourceConnection, тригер зовнішній: DetectChanges: false). Деталі → deploy-pipeline. |
| Деплой dev | Amplify auto-deploy на main. SSM-зміни синхронізує Lambda abitly-dev-amplify-sync. |
| Публічні URL | https://abitly.org (prod). Dev: https://main.d3sx9l6zmir3cj.amplifyapp.com + TODO: кастомний домен. |
| DNS/CDN | Cloudflare → domains-dns |
Залежності
Section titled “Залежності”- Залежить від: Abitly API · Strapi · Studsearch backend (cross-product) · Auth · Telegram (deep link до бота) · Analytics (track-події)
- Від нього залежать: —
Env-змінні
Section titled “Env-змінні”SSM Parameter Store за префіксом /abitly/{env}/frontend/. Список — у environments.
| Змінна | Призначення |
|---|---|
NEXT_PUBLIC_API_URL | base URL Abitly API |
NEXT_PUBLIC_STRAPI_API_URL | base URL Strapi |
NEXT_PUBLIC_STUDSEARCH_API_URL | base URL Studsearch backend |
NEXT_PUBLIC_ANALYTICS_COLLECTOR_URL | endpoint collector |
NEXT_PUBLIC_TELEGRAM_BOT_URL | deep link до бота |
NEXT_PUBLIC_URL | публічний URL фронту |
NEXT_PUBLIC_DISABLE_PROMOTIONS | feature flag |
DEV_HTTP_USER · DEV_HTTP_PASS | basic auth для dev |
DISABLE_ESLINT_PLUGIN · ESLINT_NO_DEV_ERRORS | build config |
Ключові команди
Section titled “Ключові команди”npm run dev # локальний devnpm run build # production buildnpm run typechecknpm run lintnpm run test # unitnpm run test:e2e # E2E (Playwright)npm run analyze # bundle analyzernpm run schemas:gen # генерація JSON-schemasnpm run gtm:sync # синхронізація GTM-контейнераДеплой та відкат
Section titled “Деплой та відкат”- Prod (ECS): docker build → ECR push → ECS service update нової task-def revision. Відкат — попередня revision (
aws ecs update-service --task-definition <prev-arn>). - Dev (Amplify): автодеплой; відкат — «Redeploy this version» у Amplify console на попередньому successful build-у.
Деталі → deploy-pipeline, deploy-rollback.
Логи та моніторинг
Section titled “Логи та моніторинг”- ECS логи → CloudWatch Logs
/ecs/abitly-prod-frontend(TODO:підтвердити). - Метрики Next.js
/api/metrics(Prometheus) → Grafana на observability stack. - Triple-channel error logging (через
/api/logger/route.ts+ liblokiLogger):- Sentry prod-only (org
abitlyнаde.sentry.io, build черезSENTRY_AUTH_TOKENдля source maps). - Telegram через
TELEGRAM_BOT_TOKEN+TELEGRAM_CHAT_ID(15/min rate limit + 30s dedupe). - Loki напряму на DO Droplet через
lokiLogger.
- Sentry prod-only (org
Типові проблеми
Section titled “Типові проблеми”- Сайт недоступний → service-down
- Регресія після деплою → deploy-rollback