Авторы: Бальжиев Аюр, Грудцына Виктория, Толстограева Виктория
MedScheduler — это клиент-серверное медицинское приложение и веб-сервис, предназначенные для управления записями на приём к врачам. Система поддерживает ролевую модель доступа с разделением прав между следующими категориями пользователей: пациенты, врачи, а также администраторы клиник и системы.
Основная функциональность MedScheduler:
- Для пациентов:
- Поиск врачей по фильтрам,
- Запись на приём и оставление заявки на занятый слот,
- Просмотр отзывов.
- Для врачей:
- Просмотр расписаний со всех мест работы.
- Для администраторов больниц:
- Формирование статистики по работе специалистов,
- Управление расписанием клиники,
- Администрирование врачей.
- Для администратора сервиса:
- Работа с данными пользователей,
- Создание клиник,
- Назначение администраторов больниц.
| Приложение | Веб-сервис |
|---|---|
|
Скачать MedScheduler Для запуска перейдите в MedSchedulerRelease.zip → release → MedScheduler.exe |
Перейти на сайт MedScheduler |
| Основные технологии и инструменты | |
|---|---|
| Компонент | Технологии / Инструменты |
| Серверная часть (C++) | Boost.Beast (HTTP сервер), libpq (работа с PostgreSQL) |
| Клиент (C++) | Qt6.8.2 (графический интерфейс) |
| Фронтенд | Next.js (SSR и маршрутизация), React (компонентная архитектура), TailwindCSS (утилитарная стилизация) |
| База данных | PostgreSQL |
| Инфраструктура и DevOps | Docker; Nginx (reverse proxy и SSL-терминация); Certbot; виртуальная машина в Yandex.Cloud |
| CI/CD | GitHub Actions (автоматическая сборка, деплой и обновление) |
| Тестирование | Postman (ручное тестирование API) |
Система построена по модульному принципу с использованием контейнеризации:
- Серверное приложение, база данных и фронтенд развернуты в отдельных Docker контейнерах на виртуальной машине с Ubuntu в Yandex.Cloud.
- Для обработки и маршрутизации входящих HTTP/ HTTPS запросов используется reverse proxy Nginx, который:
- Принимает все запросы от клиентов,
- Маршрутизирует запросы к API серверу или фронтенду,
- Обеспечивает SSL-терминацию с использованием сертификатов, полученных через Certbot, гарантируя защищённое HTTPS соединение.
Процесс автоматического деплоя реализован с помощью GitHub Actions и включает следующие этапы:
- При пуше в ветку
mainзапускается пайплайн деплоя. - Для серверной части и базы данных выполняется:
- Сборка Docker образов,
- Передача архивов с образами на сервер через SSH,
- Остановка текущих контейнеров и запуск новых с обновлёнными версиями.
- Для фронтенда:
- Сборка и упаковка веб-приложения,
- Копирование собранных файлов на сервер,
- Сборка и запуск Docker контейнера фронтенда.
- Применяется механизм базовой аутентификации (Basic authentication).
- Пароли пользователей хранятся в базе данных в виде хешей, полученных с применением алгоритма SHA-256 и уникальной соли для каждого пользователя.
- Все данные передаются по защищённому протоколу HTTPS, обеспечивающему шифрование и целостность информации во время сетевого взаимодействия.
Схема взаимодействия объектов в базе данных![]() |
|---|
Схема серверной части приложения![]() |
|---|
Схема клиентского приложения![]() |
|---|
| API-документация | Карта веб-сервиса |
|---|---|
| Перейти к описанию API | Перейти к карте сайта |
Для верификации корректности работы API сервиса предусмотрена коллекция тестов в Postman.
-
Установленный Docker
-
Установленный Newman
npm install -g newman
cd backend
docker system prune --volumes #если запускаем не в первый раз
docker-compose down -v #если запускаем не в первый раз
docker-compose up --build
newman run tests_for_MedScheduler.postman_collection.json -e MedScheduler_environment.postman_environment.json



