Commit Graph

55 Commits

Author SHA1 Message Date
kilyabin
04f6ea28ec fix: scripts modernize 2025-11-24 02:43:06 +04:00
kilyabin
aa0bec0702 fix for prod 2025-11-24 02:40:02 +04:00
kilyabin
3ccab6bf51 fix: removed the meanness
removed the meanness left by the developer of the base code
2025-11-24 02:06:12 +04:00
kilyabin
ce8aa2e707 Update README.md 2025-11-23 02:43:37 +04:00
kilyabin
b1f892ca7d perf: оптимизация памяти - кэширование только текущей недели и условный парсинг Критические оптимизации для снижения потребления памяти с 1.2 ГБ: - Кэширование только текущей недели: * Кэш хранит только текущие недели (без параметра wk) * Запросы с конкретной неделей (wk указан) не кэшируются * Ключ кэша изменен с ${group}_${wk} на group * Уменьшен maxCacheSize с 100 до 50 записей - Условный парсинг навигации по неделям: * Парсинг навигации выполняется только если weekNavigationEnabled === true * Если навигация выключена, parseWeekNavigation не вызывается * Экономит память и CPU при выключенной навигации * Параметр shouldParseWeekNavigation передается через getSchedule -> parsePage - Результат: * Значительное снижение потребления памяти * Кэш содержит только актуальные данные (текущие недели) * Парсинг навигации выполняется только при необходимости Измененные файлы: - src/pages/[group].tsx - логика кэширования только текущей недели - src/app/agregator/schedule.ts - параметр для условного парсинга - src/app/parser/schedule.ts - условный вызов parseWeekNavigation
Критические оптимизации для снижения потребления памяти

- Кэширование только текущей недели:
  * Кэш хранит только текущие недели (без параметра wk)
  * Запросы с конкретной неделей (wk указан) не кэшируются
  * Ключ кэша изменен с `${group}_${wk}` на `group`
  * Уменьшен maxCacheSize с 100 до 50 записей

- Условный парсинг навигации по неделям:
  * Парсинг навигации выполняется только если weekNavigationEnabled === true
  * Если навигация выключена, parseWeekNavigation не вызывается
  * Экономит память и CPU при выключенной навигации
  * Параметр shouldParseWeekNavigation передается через getSchedule -> parsePage

- Результат:
  * Значительное снижение потребления памяти
  * Кэш содержит только актуальные данные (текущие недели)
  * Парсинг навигации выполняется только при необходимости

Измененные файлы:
- src/pages/[group].tsx - логика кэширования только текущей недели
- src/app/agregator/schedule.ts - параметр для условного парсинга
- src/app/parser/schedule.ts - условный вызов parseWeekNavigation
2025-11-23 02:38:09 +04:00
kilyabin
2893a9fd18 feat: добавлена навигация по неделям с возможностью отключения через админ-панель
feat: добавлена навигация по неделям с возможностью отключения через админ-панель

Реализована навигация по неделям в расписании с парсингом ссылок из HTML страницы
оригинального сайта. Добавлена возможность управления навигацией через админ-панель
с сохранением настроек в файл.

Основные изменения:

- Парсинг навигации по неделям:
  * Добавлены типы WeekInfo и ParseResult в парсер
  * Реализована функция parseWeekNavigation для извлечения ссылок с параметром wk
  * Парсер ищет ссылки в href, onclick, формах и других атрибутах
  * Автоматическое определение номеров недель из текста ссылок и контекста
  * Вычисление соседних недель на основе найденных данных

- API и функции:
  * Обновлена функция getSchedule для поддержки параметра wk в URL
  * Обновлен getServerSideProps для чтения параметра wk из query string
  * Кэширование расписания с учетом недели (ключ включает group + wk)

- Компоненты:
  * Создан компонент WeekNavigation с кнопками навигации
  * Интегрирована навигация в компонент Schedule
  * Навигация работает через изменение URL параметра wk

- Система настроек:
  * Создан settings-loader для загрузки/сохранения настроек в JSON
  * Добавлен API endpoint /api/admin/settings для управления настройками
  * Добавлен переключатель в админ-панели для включения/выключения навигации
  * Настройки сохраняются в src/shared/data/settings.json и переживают перезапуски

- Файлы:
  * src/app/parser/schedule.ts - парсинг навигации по неделям
  * src/app/agregator/schedule.ts - поддержка параметра wk
  * src/pages/[group].tsx - чтение wk из query и передача настроек
  * src/widgets/schedule/week-navigation.tsx - компонент навигации
  * src/widgets/schedule/index.tsx - интеграция навигации
  * src/pages/admin.tsx - управление настройками
  * src/shared/data/settings-loader.ts - загрузка/сохранение настроек
  * src/pages/api/admin/settings.ts - API для настроек
  * src/shared/data/settings.json - файл с настройками
2025-11-23 02:24:27 +04:00
kilyabin
cf0137a8d6 feat: добавлены анимации загрузки и переходов между разделами
- Добавлен полноэкранный индикатор загрузки с размытием фона (LoadingOverlay)
- Реализован глобальный контекст загрузки для отслеживания переходов между страницами
- Добавлены плавные fade-анимации при переходах между страницами
- Реализованы поочередные (stagger) анимации для карточек:
  * Карточки дней на странице расписания
  * Карточки уроков внутри каждого дня
  * Карточки групп на главной странице
- Анимации работают на всех устройствах, включая мобильные
- Улучшен компонент Spinner с поддержкой разных размеров
- Исправлена ошибка гидратации с вложенными <li> элементами в навигации
- Оптимизированы задержки анимаций для более быстрого отображения контента
2025-11-23 01:29:09 +04:00
kilyabin
e5262f8203 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
2025-11-23 00:58:58 +04:00
kilyabin
808d577964 feat: исправление мобильной версии и улучшение UX
- Исправлена мобильная версия: добавлена горизонтальная прокрутка навигации,
  оптимизированы отступы и размеры элементов для touch-интерфейсов
- Устранено зависание на мобильных: удален бесконечный цикл в date-serializer.ts
- Улучшена читаемость: сделаны светлее описание пар, дни недели и текст
  последнего обновления (текущий день остается выделенным)
- Добавлена автоматическая прокрутка до текущего дня при загрузке страницы
- Добавлено отображение 'Пары нет' для отмененных пар при замене
- Оптимизированы скрипты установки: добавлена проверка зависимостей перед
  установкой для ускорения повторных запусков
- Исправлено отображение адреса и аудитории на мобильных устройствах
- Улучшены диалоги и touch-цели для мобильных устройств
2025-11-23 00:13:51 +04:00
kilyabin
66bc7136a3 fix script 2025-11-18 04:23:31 +04:00
kilyabin
b5f902a13f fixed .env use 2025-11-18 04:16:52 +04:00
kilyabin
327f143a29 fixed scripts and replaced consts 2025-11-18 04:13:20 +04:00
kilyabin
0bb41c897c goodize scripts 2025-11-18 04:03:24 +04:00
kilyabin
b82d4e5085 add scripts to auto-install 2025-11-18 03:57:22 +04:00
kilyabin
f7a8cc622f fixed docker-compose 2025-11-18 03:36:47 +04:00
kilyabin
82c22c54d3 modernize project with Docker support and dependency updates
- Pin all dependencies to stable versions (remove 'latest')
- Update lucide-react to 0.554.0 for React 19 compatibility
- Add Docker support with Dockerfile and docker-compose.yml
- Update TypeScript target to ES2022
- Add .nvmrc and netlify.toml for deployment configuration
- Update README with Docker deployment instructions
2025-11-18 03:33:08 +04:00
kilyabin
5feff78420 ALIVE! make it work and navigation now dynamic 2025-11-18 03:15:23 +04:00
kilyabin
642649e240 Update README.md 2024-05-22 22:54:47 +04:00
kilyabin
e3769783f9 Update README.md 2024-04-22 15:22:12 +04:00
kilyabin
01b279164b Update groups.ts 2023-10-19 16:42:02 +04:00
kilyabin
8123e4b574 Update index.tsx 2023-10-19 16:40:04 +04:00
VityaSchel
5bfaf3875e Add sass dependency 2023-10-15 01:01:34 +04:00
VityaSchel
7e440c9bff Add loading indicator to group switcher 2023-10-15 00:58:12 +04:00
VityaSchel
95f1b8914f Change temporary redirect to permanent, fix robots.txt 2023-10-14 19:58:26 +04:00
VityaSchel
d1f990b706 Fix canonical URLs for SEO 2023-10-12 19:03:25 +04:00
VityaSchel
9ae56a82a8 Fix sitemap.xml dynamic generation 2023-10-12 18:45:24 +04:00
VityaSchel
813fa218e9 It seems that next-sitemap is unable to produce sitemaps for dynamic paths, so we're switching back to dynamic server-side sitemap generation 2023-10-12 18:35:39 +04:00
VityaSchel
3af808d77c OGP meta tags and SEO optimization 2023-10-12 16:03:43 +04:00
VityaSchel
23e32a63c4 Fix ETag header 2023-10-04 18:48:16 +04:00
VityaSchel
ea39ea9da1 Remove redunant console.logs and netlify status badge 2023-10-03 18:07:10 +04:00
VityaSchel
256153f7c3 Gray out passed days, scroll to current day by disabling history restoration in History API 2023-10-03 18:05:38 +04:00
VityaSchel
a756e4ee13 For some reason next/image doesn't work so I'm using default html's img tag now 2023-10-03 17:24:11 +04:00
VityaSchel
c3acb3681e Fix emoji path 2023-10-03 17:21:33 +04:00
VityaSchel
00d81ef7df ETag generation 2023-10-03 15:47:50 +04:00
VityaSchel
bd4494d6d0 Fixed date-serializer 2023-10-03 02:20:55 +04:00
VityaSchel
5bee5a2e54 Added fallback strategy 2023-10-03 02:17:12 +04:00
VityaSchel
d8ccc560ee Fixed tech stack in README 2023-10-02 22:31:51 +04:00
VityaSchel
cd22cb31d7 attempt to fix #3 2023-10-02 21:50:41 +04:00
VityaSchel
4f93a851a7 attempt to fix #2 2023-10-02 21:47:34 +04:00
VityaSchel
9bb6a67b3a Idk go fuck yourself 2023-10-02 21:45:16 +04:00
VityaSchel
2d867fab2a Add title, description, favicon, keywords, author tags 2023-10-02 21:29:20 +04:00
VityaSchel
b1e8c2a058 Fixed @shadcn/ui TS error 2023-10-02 20:39:37 +04:00
VityaSchel
d0f0be6887 Add src/shadcn to TypeScript ignored paths 2023-10-02 20:36:55 +04:00
VityaSchel
b3f9114ccd Fixed next.config.js 2023-10-02 20:34:07 +04:00
Viktor Shchelochkov
ce82be9530 Update README.md 2023-10-02 20:29:48 +04:00
Viktor Shchelochkov
55325bfb48 Fixed themed images in README 2023-10-02 20:28:11 +04:00
VityaSchel
410b5acb29 Fix hydration error; fix linter reports; fix t.me link 2023-10-02 20:25:03 +04:00
VityaSchel
f0c1347bbd Add Github button to navbar 2023-10-02 19:07:04 +04:00
VityaSchel
755654cf9d Added last update, cache strategy, telegram fail notifications, teachers photos 2023-10-02 18:54:26 +04:00
VityaSchel
f6daee6201 Add dates, discipline fallbacks 2023-10-02 01:04:55 +04:00