
Дизайн мой. Реализация на Vue. Есть интересные кастомные решения.
Бек на WordPress (заказчик привык к этой админке) отдаёт контент по GraphQL. При этом vue router понимает где страница, где категория, какие есть пункты меню и тп, что позволяет заказчику полностью управлять наполнением и структурой сайта из админки.
Расписание
Для сохранения данных расписания используется advanced custom fields, но при этом для удобства заказчика добавлен кастомный раздел управления расписанием:



Календарь

Реализован кастомным компонентом vue, где написан скрипт, который вычисляет переходящие события с плавающей датой (календарь вечный).
Вычисление пасхи
calculateEaster(year) {
// 1. Вычисление "золотого числа" (фаза Луны)
const a =
(CONSTANTS.GOLDEN_NUMBER_CYCLE * (year % CONSTANTS.GOLDEN_NUMBER_CYCLE) +
CONSTANTS.SOLAR_CORRECTION) %
CONSTANTS.LUNAR_CYCLE
// 2. Определение дня недели
const b =
(2 * (year % 4) + 4 * (year % CONSTANTS.DAYS_IN_WEEK) + 6 * a + 6) % CONSTANTS.DAYS_IN_WEEK
// 3. Расчёт даты Пасхи по юлианскому календарю
let day, month
if (a + b > 10) {
day = a + b - CONSTANTS.APRIL_OFFSET
month = 3 // Апрель (месяцы в JS: 0–11)
} else {
day = CONSTANTS.MARCH_OFFSET + a + b
month = 2 // Март
}
// 4. Конвертация в григорианский календарь
const easterDate = new Date(year, month, day)
const gregorianShift = year >= 2100 ? 14 : 13 // Разница календарей
easterDate.setDate(easterDate.getDate() + gregorianShift)
return easterDate
},
Полный код можно посмотреть на gitlab в src/utils/otrhodoxEvents.js


