Skip to content

NotACat1/ConferenceScheduler

Repository files navigation

📅 Conference Scheduler — умное расписание конференц-зала

“Планируйте уверенно. Бронируйте без ошибок.”

Kotlin Jetpack Compose Material3 MVVM License: MIT


🪄 Обзор Проекта

«Зал Свободен» — это Android-приложение нового поколения для умного управления расписанием конференц-залов.
Оно полностью избавляет от проблем с пересекающимися бронированиями, дублированием встреч и ручным вводом расписания.

💡 Основано на Kotlin + Jetpack Compose, с реактивным интерфейсом и надёжным хранением состояния.
Создано с нуля по принципам чистой архитектуры (MVVM).


🚀 Ключевые Возможности

🧠 Интеллектуальное Бронирование

  • 🔍 Мгновенная проверка доступности: система автоматически отслеживает пересечения интервалов.
  • 🚫 Предотвращение конфликтов: пользователю выводится уведомление, если время занято.
  • 💾 Персистентность: данные сохраняются между запусками через SavedStateHandle + Gson.

⚡ Реактивный UI

  • 📅 Группировка по датам: события отображаются с удобными заголовками — Сегодня, Завтра, Понедельник, 14 Октября.
  • 🕓 Материальные пикеры: выбор даты и времени через стандартные диалоги Material 3.
  • 💬 Мгновенное обновление: добавленные события появляются сразу, без перезапуска экрана.

💎 UX, созданный для людей

  • 🎨 Material 3 Design — минимализм, контраст и акценты.
  • 🧩 Jetpack Compose — декларативный и читаемый код интерфейса.
  • 🧭 MVVM Архитектура — чистое разделение логики, состояния и отображения.

🛠️ Технологический Стек

🧩 Компонент 🚀 Технология 🧭 Назначение
Язык разработки Kotlin Основной язык проекта
🧱 UI Фреймворк Jetpack Compose Декларативное создание интерфейсов
🎨 Дизайн-система Material 3 Современный UI/UX
🧠 Архитектура MVVM Разделение слоёв: View ↔ ViewModel ↔ Model
💾 Состояние SavedStateHandle Хранение состояния между пересозданиями
🧮 Сериализация Gson Сохранение/восстановление объектов событий
Дата и время java.time Работа с временными интервалами

🧩 Архитектура Проекта


com.example.conferencescheduler/
│
├── model/
│   └── Event.kt                # Модель события
│
├── viewmodel/
│   └── ScheduleViewModel.kt    # Бизнес-логика, проверка пересечений, сохранение состояния
│
├── ui/
│   ├── ScheduleScreen.kt       # Главный экран расписания
│   └── components/
│       └── AddEventDialog.kt   # Диалог добавления события (дата, время, название)
│
└── util/

🧭 MVVM в действии:

  • Model — хранит структуру данных (Event)
  • ViewModel — управляет логикой, проверками и сохранением (ScheduleViewModel)
  • View (Compose) — показывает интерфейс и обновляется реактивно (ScheduleScreen, AddEventDialog)

💡 Пример Использования

Добавление нового события 🕓

При нажатии открывается диалог, где пользователь вводит название и выбирает дату/время.
После подтверждения:

  • Происходит проверка на пересечения.
  • Если слот свободен — событие добавляется и сохраняется.
  • Если занят — показывается уведомление «Зал занят в интервале 14:00–15:00».

🧠 Логика Проверки Доступности

fun isAvailable(start: LocalDateTime, end: LocalDateTime): Boolean {
    return events.none { event ->
        start.isBefore(event.endTime) && end.isAfter(event.startTime)
    }
}

🔒 Простая и надёжная проверка на пересечения временных интервалов.


🏗️ Установка и Запуск

  1. 📥 Клонировать репозиторий:

    git clone https://github.com/NotACat1/ConferenceScheduler.git
  2. 🧭 Открыть в Android Studio.

  3. ⚙️ Синхронизировать Gradle и убедиться, что зависимости загружены.

  4. ▶️ Запустить на эмуляторе или устройстве.

  5. 🎉 Готово! Добавляйте и управляйте бронированиями без конфликтов.


“Зал Свободен — когда технологии работают на ваше время.”

About

A next-generation Android app for easy management of conference room schedules. It completely eliminates the hassle of overlapping bookings, duplicate appointments, and manual scheduling.

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages