feat: каркас v2 — Astro 5 + миграция 50 постов из WP + RSS для IPB Importer

- Astro 5 (6.3.6) minimal scaffold с Content Collections для posts/pages
- Тёмная палитра в духе старой темы darkness-10 (тонкая типографика Inter+Lora)
- Layout с шапкой/футером, главной-лентой, страницами категорий и одиночными постами
- RSS (общий + per-category) под IPB RSS Importer: RFC-822 pubDate,
  <guid isPermaLink="true">, <content:encoded> с CDATA, <lastBuildDate>
- RSS_CUTOFF фильтр: архив 2009-2015 на сайте остаётся, в RSS — только новые
- 50 постов и 6 страниц мигрированы из WP (anotherreflctions_ru @ db.hhivp.com)
  через scripts/migrate-wp.mjs (HTML→md без внешних зависимостей)
- sitemap.xml автоматически через @astrojs/sitemap
This commit is contained in:
2026-05-21 00:58:44 +03:00
parent b458cc6fa3
commit 0c3e248ccc
79 changed files with 8345 additions and 132 deletions

36
src/consts.ts Normal file
View File

@@ -0,0 +1,36 @@
export const SITE_TITLE = 'Иные Отражения';
export const SITE_DESCRIPTION = 'Ролевой проект по современной фантастике. Дозоры С. Лукьяненко, Амбер Р. Желязны, А. Пехов.';
export const SITE_URL = 'https://anotherreflections.ru';
export const SITE_AUTHOR = 'Иные Отражения';
export const SITE_LANG = 'ru-RU';
/**
* RSS-фид отдаёт только посты с pubDate >= этой даты.
* Сценарий: фид подключают как источник в IPB RSS Importer; чтобы старый
* архив 20092015 не залился в форумы одной волной, отрезаем по cutover.
* Изменить дату → перезапустить build.
*/
export const RSS_CUTOFF = new Date("2026-05-20T00:00:00+03:00");
/** Сколько постов в RSS-фиде максимум (после фильтра cutoff). */
export const RSS_LIMIT = 30;
/** Внешние ссылки на форумы и связанные проекты. */
export const FORUMS = [
{ name: 'Главный форум', url: 'https://forum.anotherreflections.ru/' },
{ name: 'Сумерки Дозоров', url: 'https://sumerki.anotherreflections.ru/' },
{ name: 'Ренессанс', url: 'https://renessans.anotherreflections.ru/' },
{ name: 'Амбер', url: 'https://amber.anotherreflections.ru/' },
{ name: 'Киндрет', url: 'https://kindret.anotherreflections.ru/' },
{ name: 'Warhammer 40k', url: 'https://warhammer40k.anotherreflections.ru/' },
{ name: 'Над бездной', url: 'https://bezdna.anotherreflections.ru/' },
{ name: 'Глубина', url: 'https://deep.anotherreflections.ru/' },
];
/** Главное меню. */
export const MAIN_NAV = [
{ label: 'Главная', href: '/' },
{ label: 'О нас', href: '/o-nas/' },
{ label: 'Наши друзья', href: '/nashi-druzya/' },
{ label: 'Форумы', href: '#forums' },
];