Skip to content

SanriaArgos/MedScheduler

Repository files navigation

Превью

MedScheduler

Авторы: Бальжиев Аюр, Грудцына Виктория, Толстограева Виктория

Описание проекта

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 соединение.

Деплой и CI/CD

Процесс автоматического деплоя реализован с помощью GitHub Actions и включает следующие этапы:

  • При пуше в ветку main запускается пайплайн деплоя.
  • Для серверной части и базы данных выполняется:
    • Сборка Docker образов,
    • Передача архивов с образами на сервер через SSH,
    • Остановка текущих контейнеров и запуск новых с обновлёнными версиями.
  • Для фронтенда:
    • Сборка и упаковка веб-приложения,
    • Копирование собранных файлов на сервер,
    • Сборка и запуск Docker контейнера фронтенда.

Безопасность

  • Применяется механизм базовой аутентификации (Basic authentication).
  • Пароли пользователей хранятся в базе данных в виде хешей, полученных с применением алгоритма SHA-256 и уникальной соли для каждого пользователя.
  • Все данные передаются по защищённому протоколу HTTPS, обеспечивающему шифрование и целостность информации во время сетевого взаимодействия.

Структура проекта

Схема взаимодействия объектов в базе данных
Схема взаимодействия объектов в базе данных
Схема серверной части приложения
Архитектура сервера
Схема клиентского приложения
Архитектура приложения
API-документация Карта веб-сервиса
Перейти к описанию API Перейти к карте сайта

Тестирование API

Для верификации корректности работы API сервиса предусмотрена коллекция тестов в Postman.

1. Предварительные требования

  • Установленный Docker

  • Установленный Newman

npm install -g newman

2. Запуск Docker

cd backend
docker system prune --volumes #если запускаем не в первый раз
docker-compose down -v  #если запускаем не в первый раз
docker-compose up --build

3. Запуск тестов

newman run tests_for_MedScheduler.postman_collection.json -e MedScheduler_environment.postman_environment.json

About

Doctor search and appointment service

Resources

Stars

Watchers

Forks

Contributors