feat: добавлена админ-панель и главная страница с навигацией по курсам
Основные изменения: Админ-панель: - Создана защищенная паролем админ-панель по пути /admin - Реализована система авторизации с сессионными куками - Добавлен CRUD для управления группами (создание, редактирование, удаление) - Добавлено поле "курс" (1-5) для каждой группы с возможностью редактирования Структура данных: - Миграция групп из TypeScript файла в JSON формат (groups.json) - Обновлена структура данных: добавлено поле course - Реализована автоматическая миграция старых данных в новый формат - Создан groups-loader для работы с JSON файлом Главная страница: - Создана главная страница с аккордеоном по курсам (1-5) - Группы сгруппированы по курсам для удобной навигации - Добавлены кнопки: "Добавить группу", переключение темы и GitHub - Убрана верхняя навигация с главной страницы Навигация: - Добавлена кнопка "К группам" в начало навигации на страницах расписания - На мобильных устройствах скрыты кнопки групп, оставлена только кнопка возврата - Улучшена адаптивность навигации Технические улучшения: - Исправлена проблема с tailwind-scrollbar-hide (заменен плагин на CSS класс) - Обновлены все компоненты для работы с новой структурой данных групп - Добавлена поддержка переменных окружения ADMIN_PASSWORD и ADMIN_SESSION_SECRET
This commit is contained in:
@@ -1,6 +1,18 @@
|
||||
export const groups: { [group: string]: [number, string] } = {
|
||||
ib4k: [138, 'ИБ-4к'],
|
||||
ib5: [144, 'ИБ-5'],
|
||||
ib6: [145, 'ИБ-6'],
|
||||
ib7k: [172, 'ИБ-7к']
|
||||
// Загружаем группы из JSON файла только на сервере
|
||||
// На клиенте будет пустой объект, группы должны передаваться через props
|
||||
let groups: { [group: string]: [number, string] } = {}
|
||||
|
||||
// Используем условный require только на сервере для избежания включения fs в клиентскую сборку
|
||||
if (typeof window === 'undefined') {
|
||||
// Серверная сторона
|
||||
try {
|
||||
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||
const groupsLoader = require('./groups-loader')
|
||||
groups = groupsLoader.loadGroups()
|
||||
} catch (error) {
|
||||
console.error('Error loading groups:', error)
|
||||
groups = {}
|
||||
}
|
||||
}
|
||||
|
||||
export { groups }
|
||||
|
||||
Reference in New Issue
Block a user