Skip to content

Latest commit

 

History

History
124 lines (95 loc) · 7.24 KB

File metadata and controls

124 lines (95 loc) · 7.24 KB
Иконка Bsuir Time

Bsuir Time

Расписание БГУИР, которое ощущается нативным — с виджетами, дневником, огоньком и облачной синхронизацией

English · Русский

Expo React Native TypeScript Платформы Лицензия: MIT

Скачать в App Store Скачать в Google Play


Моё расписание Дневник Виджеты Внешний вид

Возможности

  • 📅 Расписание групп и преподавателей — 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 android

Expo 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


Если Bsuir Time спасает твои утра — поставь ⭐ репозиторию, это правда помогает!