Skip to content

sergshner/doctors_appointments

Repository files navigation

doctors_appointments

Это демо приложение для обеспечения записи клиента к врачу посредством веб-сайта. Приложение построено на базе фреймворка Yii2

Ссылка на ДЕМО приложения: http://66.225.220.70:8081/

Установка

Требования

  1. git
  2. composer
  3. php

Установка

  1. Клонируем репозиторий: git clone https://github.com/sergshner/doctors_appointments.git .
  2. Ставим composer-asset-plugin: composer global require "fxp/composer-asset-plugin:^1.2.0"
  3. Ставим зависимости: composer install
  4. Редактируем config/db.php, заполняем dsn,username,password
  5. Применяем миграции: yii migrate/up

Реализация

Модель данных и связи

Отражены на следующей ER диаграмме alt text

Миграции

Для изменения и поддержания структуры базы данных а актуальном состоянии в проекте используется механизм миграций, в частности, его реализация, встроенная в Yii2 фреймворк. (см. папку migrations)

Модели

Фреймворк Yii2 построен на основе паттерна MVC. Реализация моделей находится в папке models.

UI

В основе интерфейса пользователя лежит несложный responsive шаблон на основе фреймворка Twitter Bootstrap. Таким образом, отображение сайта на устройствах с различными размерами экрана не нарушает User Expierence, сайт выглядит красиво и им удобно пользоваться.

Для реализации интерфейса записи к врачу использована технология AJAX, а точнее, её реализация, PJAX, которая также интегрирована в Yii2 фреймворк. Использование AJAX позволяет избавиться от необходимости полной перезагрузки страницы при каждом переходе пользователя, что значительно повышает отзывчивость сайта, уменьшает трафик между клиентом и сервером, снижает нагрузку на сервер. Сохранение данных о записях к врачу также реализовано при помощи технологии AJAX.

alt text alt text

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

Благодаря фреймворку Yii2 мы имеем "из коробки" защиту от самых распространнёных уязвимостей в вебе:

  1. SQL-инъекция - работа с данными происходит через модели, нет "чистых" SQL запросов. Если же они понадобятся, необходиомо использовать "подготовленные выражения"
  2. XSS (кросс сайтовый скриптинг) - пользовательские данные при выводе в браузер легко экранируются при помощи функций \yii\helpers\HtmlPurifier::process или \yii\helpers\Html::encode
  3. CSRF (межсайтовая подделка запроса) - в Yii2 уже интегрирована защита на основе токена

Масштабирование

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

  1. Добавление кеширования (различные уровни - только данные, вся страница, часть страниц(ы)) - кеширование должно быть проработано с точни зрения понимания, какие части страницы и сколько могут находится в кешированном (т.е., возможно, устаревшем) состоянии
  2. Горизонтальное масштабирование (уровень веб-сервера/приложения, уровень БД) - обычно самая сложная и неоднозначная часть для масштабирования это слой БД. Применение того же шардинга, часто требует пересмотра шаблонов работы с даннными и денормализации. В данном проекте видится, что на начальном этапе может быть легко применён шардинг на основе ID доктора.

About

Doctors appointments

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published