ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА МОБИЛЬНОГО ПРИЛОЖЕНИЯ ДЛЯ УПРАВЛЕНИЯ РАСПИСАНИЕМ И БРОНИРОВАНИЕМ ЗАНЯТИЙ В ФИТНЕС-КЛУБЕ

ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА МОБИЛЬНОГО ПРИЛОЖЕНИЯ ДЛЯ УПРАВЛЕНИЯ РАСПИСАНИЕМ И БРОНИРОВАНИЕМ ЗАНЯТИЙ В ФИТНЕС-КЛУБЕ

Авторы публикации

Рубрика

Информационные технологии

Просмотры

1

Журнал

Журнал «Научный лидер» выпуск # 20 (273), Май ‘26

Поделиться

В статье рассматривается проектирование и разработка мобильного приложения для управления расписанием и бронированием занятий в фитнес-клубе. Описывается актуальность цифровизации процессов записи на тренировки, анализируются основные пользовательские сценарии клиентов, тренеров и администратора. Рассматривается архитектура приложения, реализованного с использованием Flutter, Bloc, Firebase, GetIt и GoRouter. Особое внимание уделяется организации модульной структуры проекта, работе с облачной базой данных, разграничению пользовательских ролей и реализации механизма бронирования занятий. Приведены основные результаты разработки, подходы к тестированию и возможные направления дальнейшего развития приложения.

Современная сфера фитнес-услуг всё активнее использует цифровые инструменты для взаимодействия с клиентами. Если раньше запись на занятия чаще выполнялась через администратора, телефонный звонок или личное обращение на стойку регистрации, то сейчас пользователи ожидают более быстрый и удобный способ управления своими тренировками. Мобильное приложение в таком случае становится не просто дополнительным сервисом, а важной частью работы фитнес-клуба.

Проблема особенно заметна в клубах, где есть групповые занятия, ограниченное количество мест и изменяемое расписание. Клиенту важно быстро узнать, какие тренировки доступны, кто их проводит, сколько осталось свободных мест и можно ли записаться на удобное время. Администратору, в свою очередь, необходимо поддерживать расписание в актуальном состоянии, а тренеру – видеть свои занятия и количество записавшихся участников. Если эти процессы выполняются вручную, возрастает вероятность ошибок, дублирования записей и потери актуальности информации.

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

Целью работы является проектирование и разработка мобильного приложения для управления расписанием и бронированием занятий в фитнес-клубе с использованием современных средств мобильной разработки.

Для достижения поставленной цели были решены следующие задачи:

  1. Проанализировать предметную область и определить основные пользовательские сценарии.
  2. Спроектировать архитектуру мобильного приложения и структуру данных.
  3. Выбрать технологический стек для реализации приложения.
  4. Реализовать основные модули: авторизацию, расписание, бронирование, профиль пользователя и административные функции.
  5. Организовать хранение данных с использованием Firebase.
  6. Провести тестирование основных сценариев работы приложения.

Проектирование и реализация мобильного приложения

Разрабатываемое приложение ориентировано на три основные категории пользователей: клиента фитнес-клуба, тренера и администратора. Клиент использует приложение для просмотра расписания, выбора занятия и управления своими бронированиями. Тренер получает возможность просматривать собственные тренировки и список записавшихся пользователей. Администратор управляет занятиями, пользователями и ролями внутри системы.

Такое разделение ролей позволяет сделать приложение более гибким. Обычный пользователь после регистрации получает базовую роль user. Роль тренера или администратора может быть назначена отдельно через Firebase или через интерфейс администратора. Это удобно для реального использования, так как случайный пользователь не может самостоятельно получить расширенные права.

Архитектура приложения строится по принципу разделения ответственности. Пользовательский интерфейс отвечает за отображение экранов и обработку действий пользователя. Слой управления состоянием обрабатывает события, связанные с авторизацией, загрузкой расписания и бронированием. Слой данных отвечает за взаимодействие с Firebase Authentication и Cloud Firestore. Такой подход соответствует общим принципам построения сопровождаемых программных систем, где отдельные части приложения должны иметь понятные зоны ответственности [2].

В качестве основного инструмента разработки был выбран Flutter. Он позволяет создавать мобильные приложения с единой кодовой базой и удобен для разработки интерфейсов под разные платформы [1]. Для управления состоянием используется Bloc, так как он помогает отделить бизнес-логику от экранов приложения и делает обработку состояний более предсказуемой [3]. Firebase применяется для авторизации пользователей и хранения данных [2]. GetIt используется для внедрения зависимостей, а GoRouter – для централизованной навигации между экранами [1].

Структура проекта организована по принципу feature-first. Общие элементы приложения размещаются в каталоге core, где находятся модели, стили, сервисы, маршрутизация, переиспользуемые виджеты и вспомогательные классы. Основные функциональные части вынесены в каталог features. Внутри него размещаются модули auth, schedule, booking, profile, admin и trainer.

Такой подход удобен тем, что каждая функциональная часть приложения находится в отдельной области проекта. Например, модуль авторизации содержит собственные экраны, Bloc-логику и сервисы, связанные только с регистрацией и входом. Модуль расписания отвечает за получение и отображение занятий. Модуль бронирования содержит логику записи пользователя на тренировку и отмены записи. Подобная организация проекта снижает связанность между частями системы и упрощает дальнейшую поддержку приложения [2].

Одним из ключевых элементов приложения является модуль авторизации. Пользователь может зарегистрироваться с использованием электронной почты и пароля. После регистрации в Firestore создается документ пользователя с базовыми данными и ролью user. При входе в систему приложение получает данные учетной записи и определяет, какие возможности должны быть доступны пользователю. Например, обычный клиент не видит административные функции, а администратор получает доступ к управлению занятиями и ролями.

Модуль расписания отвечает за загрузку списка тренировок из базы данных. Для каждого занятия отображаются название, описание, дата и время проведения, тренер, категория и количество доступных мест. Пользователь может открыть карточку занятия, чтобы подробнее ознакомиться с информацией и выполнить запись. Главная задача этого модуля – сделать расписание понятным и доступным без лишних действий.

Механизм бронирования является центральной функцией приложения. При записи на занятие система должна проверить, есть ли свободные места и не был ли пользователь уже записан на это занятие ранее. Если условия выполняются, создается запись в коллекции бронирований, а количество занятых мест обновляется. Если мест нет или запись уже существует, приложение должно показать понятное сообщение. Такой подход позволяет избежать дублирования данных и сделать работу приложения более надежной.

Для хранения данных используется Cloud Firestore. В базе данных можно выделить три основные коллекции: users, trainings и bookings. Коллекция users содержит сведения о пользователях, включая идентификатор, имя, электронную почту и роль. Коллекция trainings хранит информацию о занятиях: название, описание, дату, время, тренера, вместимость и количество записавшихся участников. Коллекция bookings связывает пользователя с конкретным занятием и фиксирует факт бронирования. Использование облачной базы данных упрощает синхронизацию информации между клиентским приложением и удаленным хранилищем [2].

Связь между пользователями и занятиями реализуется через бронирование. Один пользователь может иметь несколько бронирований, и одно занятие может быть связано с несколькими пользователями. Таким образом, между пользователями и занятиями фактически возникает связь многие-ко-многим, которая реализуется через промежуточную сущность booking. Такая модель хорошо подходит для системы записи на занятия, потому что позволяет отдельно хранить информацию о тренировке и отдельно фиксировать действия пользователей.

Навигация в приложении реализуется через GoRouter. Это позволяет централизованно описать маршруты и учитывать состояние авторизации [1]. Если пользователь не вошел в систему, он направляется на экран входа. После успешной авторизации открывается основной интерфейс. Также маршруты могут учитывать роль пользователя, ограничивая доступ к административным экранам для обычных клиентов.

Управление состоянием реализовано с использованием Bloc. При таком подходе экран не выполняет бизнес-логику самостоятельно, а отправляет событие в соответствующий Bloc или Cubit. Например, при нажатии на кнопку записи экран передает событие бронирования, после чего Bloc обращается к репозиторию, выполняет проверку данных и возвращает новое состояние. Это может быть состояние загрузки, успешного выполнения операции или ошибки. Благодаря этому интерфейс остается проще, а логика приложения становится более структурированной [3].

Для внедрения зависимостей используется GetIt. В нем регистрируются сервисы, репозитории и другие основные компоненты приложения. Это позволяет не создавать одни и те же объекты вручную в разных частях проекта и уменьшает связанность между модулями. Такая организация соответствует принципам повторного использования и разделения компонентов программной системы [2].

Интерфейс приложения разрабатывался с учетом простоты использования. Главный экран должен быстро показывать расписание занятий, карточка тренировки – давать достаточно информации для принятия решения, а процесс записи должен занимать минимум действий. Для пользователя важна не только сама возможность бронирования, но и уверенность в том, что действие действительно выполнено. Поэтому после записи или отмены бронирования приложение должно показывать понятный результат. При проектировании интерфейса важно учитывать базовые принципы удобства использования, так как перегруженный или непонятный интерфейс снижает эффективность работы пользователя с системой [3].

В ходе разработки также предусматривается возможность локализации интерфейса. Для этого текстовые строки могут быть вынесены в JSON-файлы для разных языков, например русского и английского. Такой способ удобен тем, что позволяет централизованно хранить переводы и не изменять код экранов при добавлении нового языка. Хотя локализация не является главной функцией приложения, она делает проект более гибким и пригодным для дальнейшего развития.

Тестирование приложения проводилось по основным пользовательским сценариям. Проверялись регистрация и вход в систему, загрузка расписания, открытие карточки занятия, создание бронирования, отмена записи и отображение активных бронирований. Отдельное внимание уделялось проверке ограничений: повторная запись на одно занятие, запись при отсутствии свободных мест и доступ к административным функциям.

Функциональное тестирование показало, что основные возможности приложения соответствуют поставленным требованиям. Тестирование методом «чёрного ящика» позволило проверить систему с точки зрения обычного пользователя, без анализа внутренней реализации. Интеграционная проверка была направлена на то, чтобы убедиться в согласованной работе интерфейса, Bloc-логики и Firebase. Также оценивалось удобство использования интерфейса: понятность навигации, читаемость карточек занятий и количество действий, необходимых для записи. Такой подход соответствует общей логике проверки программных систем, когда важно оценивать не только отдельные функции, но и взаимодействие компонентов между собой [2].

В процессе разработки стало очевидно, что для такого приложения особенно важна не только техническая реализация, но и логика пользовательского пути. Если клиенту приходится долго искать нужную тренировку или непонятно, была ли запись выполнена, приложение теряет практическую ценность. Поэтому основной акцент был сделан на простом сценарии: открыть расписание, выбрать занятие, посмотреть подробности и забронировать место. Такой подход согласуется с принципами проектирования удобного пользовательского взаимодействия [3].

В результате выполнения работы было спроектировано и разработано мобильное приложение для управления расписанием и бронированием занятий в фитнес-клубе. Приложение позволяет пользователю зарегистрироваться, войти в систему, просматривать расписание тренировок, открывать карточку занятия, выполнять бронирование и отменять запись. Дополнительно в системе предусмотрены роли тренера и администратора, что позволяет расширять приложение и использовать его не только как клиентский сервис, но и как инструмент управления занятиями.

Выбранный технологический стек оказался подходящим для решения поставленной задачи. Flutter позволил реализовать мобильный интерфейс, Firebase обеспечил авторизацию и хранение данных, Bloc помог отделить бизнес-логику от экранов, GoRouter упростил навигацию, а GetIt сделал структуру зависимостей более организованной [1]. Использование feature-first структуры позволило разделить приложение на самостоятельные модули и упростить дальнейшее сопровождение проекта.

Проведенное тестирование подтвердило корректную работу основных сценариев приложения. Реализованный подход может быть использован как основа для дальнейшего развития системы. В перспективе приложение можно дополнить push-уведомлениями, расширенной историей посещений, онлайн-оплатой, аналитикой посещаемости, полноценным административным интерфейсом и более детальной поддержкой тренеров.

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

Список литературы

  1. 1. Р. Роуз в книге «Flutter и Dart. Сборник рецептов: Разработка полнофункциональных облачных приложений» (2024)
  2. 2. И. Соммервилл в книге «Инженерия программного обеспечения»
  3. 3. А. Алеев в книге «Быстрый старт Flutter-разработчика» (2019)
Справка о публикации и препринт статьи
предоставляется сразу после оплаты
Прием материалов
c по
Осталось 4 дня до окончания
Размещение электронной версии
Загрузка материалов в elibrary
Публикация за 24 часа
Узнать подробнее
Акция
Cкидка 20% на размещение статьи, начиная со второй
Бонусная программа
Узнать подробнее