Статті / блог
Метадані
Section titled “Метадані”| Поле | Значення |
|---|---|
| Статус | 🟢 prod |
| Поверхні | web |
| Доступність | безкоштовно, без акаунта |
| Власник | @Vladbandurin |
| Останнє підтвердження | 2026-06-13 · browse (abitly.org/uk/novyny, cms.abitly.org/api/categories) + код:main (abitly-frontend-v2, abitly-strapi) |
Призначення
Section titled “Призначення”Статті про вступ (НМТ, стратегія пріоритетів, мотиваційні листи, огляди спеціальностей, події ЗВО) — головний SEO-канал залучення абітурієнтів. Контент повністю керується контент-командою через Strapi; фронтенд — SSR зі стагерованим ISR.
User flow
Section titled “User flow”Точка входу: https://abitly.org/uk/novyny (uk) · https://abitly.org/en/news (en). Внутрішній роут — /[locale]/blog; локалізовані шляхи (novyny/news) задає мапа PATHNAMES (next-intl). Лінк «Блог» — у головній навігації сайту.
- Головна блогу — «База знань Abitly»: пошук, картки категорій, «Останні публікації».
- Пошук (
BlogSearch, єдиний CSR-компонент) — client-side фільтр за назвою статті та категорією, результати в dropdown. - Категорія →
/blog/{categorySlug}(live-категорії:vstup2026,vstup2025,enrollment-2025,specialities,ivents). - Стаття →
/blog/{categorySlug}/{articleSlug}— рендер ізcontent_blocks: TextBlock (Markdown) · TableBlock (JSON) · ImageBlock. Блок, що впав, замінюється i18n-повідомленням (ContentBlockError), не ламаючи сторінку. - Усі статті →
/blog/all. - Спецсторінка «Коефіцієнти НМТ» →
/blog/category/nmt-coefficients— гібрид: метадані зі Strapi + дані спеціальностей з api-v2.
ISR стагерований проти thundering herd: home 30 хв → all 35 хв → категорія 40 хв → стаття ~2,2 год → nmt-coefficients 3 год.
Мережевий шлях Web → Cloudflare (Authenticated Origin Pulls) → Strapi → Postgres уже намальований — див. data-flows, тут не дублюємо.
Дані та API
Section titled “Дані та API”| Джерело | Ендпоінт / entity | Призначення |
|---|---|---|
| Strapi | GET /api/articles (+ filters[slug], populate, sort=publishedAt:desc) | списки статей, стаття за slug |
| Strapi | GET /api/categories (+ filters[slug]) | категорії з іконками та статтями |
| Strapi | content-type article | title, excerpt, slug, locale, reading_time, cta_text/cta_link, seo, cover_image, content_blocks, author (зарезервовано, не рендериться), category, tags |
| Strapi | content-type category | name, slug, description, icon, articles |
| api-v2 | specialties (точний ендпоінт — TODO:) | дані для гібридної сторінки nmt-coefficients |
Strapi-клієнт — окремий axios instance (strapiApiClient, base URL NEXT_PUBLIC_STRAPI_API_URL) без auth-interceptors: контент публічний, REST читається анонімно (перевірено 2026-06-13 на cms.abitly.org/api/categories).
SEO: всі 5 роутів indexed; метадані статті — зі Strapi SEO-полів (meta_title/meta_description/keywords); OG type: article з cover_image 1200×630; окремі news-sitemaps uk-news.xml / en-news.xml (обидва 200 у prod).
Зв’язки з іншими фічами
Section titled “Зв’язки з іншими фічами”- Навчальні матеріали — той самий Strapi-канал контенту.
- Каталог спеціальностей — сторінка nmt-coefficients тягне дані спеціальностей з api-v2.
- Рекомендації блогу (recsys) — 🚧, картки ще немає (див. індекс); коли frontend-інтеграція приземлиться — оновити цю картку.
| Репо | Шлях | Примітка |
|---|---|---|
abitly-frontend-v2 | src/app/[locale]/(main)/blog/** | роути: home, all, [categorySlug], [articleSlug], nmt-coefficients |
abitly-frontend-v2 | src/components/pages/blog/** | UI (ArticleCard, BlogSearch, …) + metadata-генератори |
abitly-frontend-v2 | src/api/strapi/{strapi.api,strapi.queries,strapi.types}.ts | axios-функції, TanStack Query hooks, типи |
abitly-frontend-v2 | src/lib/constants/pages.ts | PATHNAMES — локалізація /blog → /novyny·/news |
abitly-frontend-v2 | src/app/(sitemaps)/{uk,en}-news.xml/route.ts | news-sitemaps |
abitly-frontend-v2 | docs/domains/blog/ | домен-доки блогу (overview, api, seo, i18n) — першоджерело деталей |
abitly-strapi | src/api/{article,category,tag,author}/ | content-types + controllers/routes/services |
Обмеження та блокери
Section titled “Обмеження та блокери”- Поле
authorіснує в типах і схемі Strapi, але ніде не рендериться (зарезервовано). - Пошук — лише client-side по назві статті/категорії, без повнотекстового.
- Strapi REST відкритий на читання без auth — за дизайном (публічний контент), але враховувати при додаванні нових content-types.
- URL спецсторінки містить літеральний сегмент
category(/novyny/category/nmt-coefficients) — quirk роутингу, не справжня категорія. - Контент двомовний (uk/en) через Strapi locale; en-наповнення відстає від uk (
TODO:підтвердити покриття). - Контент-тулінг поза скоупом картки: внутрішні репо
abitly-blog(AI FAQ generator) — див. глосарій.
Історія змін
Section titled “Історія змін”| Дата | Подія | Джерело |
|---|---|---|
| 2026-05-15 | актуалізовано домен-доки блогу у фронтенд-репо | abitly-frontend-v2 docs/domains/blog/ |
| 2026-06-13 | створено картку; факти звірено browse + код main | PR Wave 1 |