Расписание БГУИР, которое ощущается нативным — с виджетами, дневником, огоньком и облачной синхронизацией
English · Русский
- 📅 Расписание групп и преподавателей — 4-недельный цикл БГУИР, автоскролл к текущей паре, живой прогресс идущей пары, экзамены и разовые объявления.
- 🔎 Умный поиск — устойчив к опечаткам, цифровые сокращения для групп
(
410→ все подходящие группы), многословный поиск преподавателей. - 📌 Закрепление групп и преподавателей — фоновая предзагрузка, подгруппа для каждой сущности, скрытие прошедших пар, блокировка отдельных пар.
- 🚪 Занятость аудиторий — свободна ли аудитория сейчас и до какого времени; работает на собственном Cloudflare Worker.
- 📓 Дневник и планер — сетки заданий по предметам, drag-and-drop планер, статистика прогресса.
- 🔥 Огонёк — ежедневная серия активности с заморозками, вехи 7/30/100, календарь активности и вечернее напоминание.
- 🧩 Виджеты на Home и Lock Screen — WidgetKit на iOS (включая экран блокировки) и Glance-виджеты на Android, с deep link'ами в приложение.
- ☁️ Облачная синхронизация — iCloud на iOS, Google Drive на Android; offline-first с кэшем расписаний как резервным источником.
- 🎨 Персонализация — светлая/тёмная темы, свои цвета типов пар, замена иконок-слотов и 24 альтернативные иконки приложения.
- 🌍 Локализация — русский, беларуская, English.
- 🇧🇾 Государственные праздники РБ из коробки, плюс собственные выходные.
- ♿ Доступность — уменьшение движения, высокий контраст, режим «различать не только цветом».
- ✨ Нативность — настоящий
UITabBarController, Liquid Glass на iOS 26+ с graceful fallback, хаптика, skeleton-загрузка.
Приложению не нужен собственный бэкенд — все данные расписания приходят из публичного API БГУИР (
iis.bsuir.by/api/v1).
Требуется: Node.js 20+, Xcode (iOS) или Android Studio + JDK 17 (Android).
git clone https://github.com/vazonhub/bsuir-schedule.git
cd bsuir-schedule
npm install
cp .env.example .env # все переменные опциональны
npm run ios # или: npm run androidExpo Go не подойдёт — нативные табы требуют dev client, который
npm run ios/npm run androidсобирает автоматически.
Все переменные окружения опциональны: фичи, которым они нужны (Unity Ads,
синк через Google Drive, статус аудиторий, EAS-сборки), просто остаются
выключенными. См. .env.example.
Строгие MVC-слои поверх Expo Router 6:
app/ file-based роуты (тонкие re-export'ы views)
src/
├── models/dto/ DTO-типы под iis.bsuir.by/api/v1
├── services/api/ axios-обёртки — единственное место с HTTP
├── stores/ Zustand-сторы (in-memory state)
├── controllers/ оркестрация API → нормализация → store
├── views/ экраны (методы контроллеров + селекторы сторов)
├── components/ переиспользуемый UI без бизнес-логики
├── widgets/ UI Android-виджетов
└── theme/ utils/ … дизайн-токены и хелперы
targets/ нативный iOS-виджет (WidgetKit) и Unity-баннер
plugins/ Expo config-плагины (виджеты, StoreKit, иконки, …)
services/auditory-api Cloudflare Worker + краулер занятости аудиторийДетали и правила — в CONTRIBUTING.md.
Issues и PR приветствуются — сборка, архитектурные правила и конвенции коммитов описаны в CONTRIBUTING.md.
MIT © Konstantsin Betenya



