Веб-разработка. Разработка с нуля. Общие положения: 1. рабочее веб-приложение на языке PHP, спроектированное, реализованное, задокументированное и развернутое с использованием современных инструментов. 3. Не допускается использование веб-фреймворков. Допускается использование вспомогательных библиотек. 4. Курс разделен на 4 этапа (модуля). По окончании каждого этапа проводится контрольная точка (КТ) в формате презентации с демонстрацией результатов. 6. Основное внимание в работе отводится серверной логике на PHP. Аспекты клиентской части (HTML/CSS/JS), не связаны с функциональностью, прорабатываются группой на своё усмотрение. Описание работ и требований Модуль 1, КТ 1. Проектирование архитектуры системы Данный модуль полностью посвящен этапу проектирования архитектуры веб-приложения. Выполняется следующая работа: - Формирование групп и выбор тем проекта (занятие 1). - Описание требований к приложению (занятие 1). Необходимо составить список функциональных и нефункциональных требований к приложению. Часть требований необходимо взять из этого документа, другая часть составляется группой. Дополнительно кратко описывается состав основных сущностей. Функциональные требования должны быть разделены по ролям пользователей (минимум 2, включая администратора). На их основе составляется диаграмма Use-Case. Требования необходимо разделить как минимум на три группы, которые реализуются в рамках КТ 2, 3 и 4: MVP (минимально жизнеспособный продукт); расширенные требования; требования к развертыванию. - Проектирование сущностей и схемы БД (занятие 2). Необходимо выделить ключевые сущности (не менее 4) и их атрибуты, а также сущности пользователя (с несколькими ролями). Составляется список таблиц и полей БД с указанием связей. На основе этой информации строится схема БД (напр., нотации Crow’s Foot). - Проектирование структуры приложения и прототипирование (занятие 3). Необходимо определить, из каких основных разделов и страниц будет состоять приложение (например: “Главная“, “Каталог (список сущностей)“, “Мои объекты (личный кабинет)“, “Админ-панель“, “Вход/Регистрация“). Для каждой страницы составить краткое описание. Далее нарисовать концептуальную схему переходов (User Flow) между страницами, а также построить каркас наиболее сложной страницы. На занятии 4 группы демонстрируют презентацию проделанной работы. Таким образом, результатом модуля 1 является набор документов: 1) Описание темы, предметной области и требований к приложению. 2) Описание структуры БД, а также схема БД. 3) Описание страниц приложения, а также схема переходов и каркас. Все эти документы необходимо опубликовать в репозиторий проекта на платформе GitHub в отдельной папке docs/. К репозиторию имеют доступ все члены группы, а также преподаватель. Модуль 2, КТ 2. Реализация MVP Данный модуль посвящен разработке минимально жизнеспособного продукта по описанию архитектуры, составленному в модуле 1. Выполняется следующая работа: - Настройка среды и создание БД (занятие 5). Необходимо настроить на своих ноутбуках локальный веб-сервер с интерпретатором PHP и СУБД на своё усмотрение. (рекомендуется сборка XAMPP). В выбранной СУБД необходимо создать структуру таблиц по описанию из модуля 1, а также заполнить таблицы несколькими записями. - Создание моделей и связь с БД (занятие 6). Необходимо создать иерархию папок проекта (для моделей, для страниц и т.д.). Далее необходимо на PHP описать классы сущностей, соответствующие таблицам в БД, а также описать методы для взаимодействия с СУБД в рамках сущностей (select, get, save, delete), а также специфичных для проекта (в рамках требований к MVP). - Разработка веб-страниц (занятие 7). Необходимо создать все планируемые веб-страницы в рамках MVP, а также “единую точку входа”. Также обеспечить базовую валидацию и защиту. На занятии 8 группы демонстрируют презентацию проделанной работы, а также рабочее приложение. Таким образом, результатом модуля 2 является полностью рабочее приложение, соответствующее требованиям для MVP. Файлы приложения должны быть опубликованы в ранее созданный репозиторий. Модуль 3, КТ 3. Расширение функциональности Данный модуль посвящен расширению функциональности разработанного MVP. Выполняется следующая работа: - Реализация регистрации, входа и привязки данных к пользователю (занятия 9-10). Необходимо Создать формы регистрации и входа в систему, функцию выхода из системы. Обязательно реализовать обработку с хешированием пароля. Если таковая не присутствует, то создать таблицу пользователей с логинами, паролями и ролями. Добавить в ключевые таблицы БД поле user_id и при создании записей привязывать их к текущему пользователю. При переходе на каждую страницу реализовать проверку авторизации и роли пользователя. Обеспечить, чтобы пользователь видел/редактировал только свои данные (или все, если он admin). - Интеграция библиотеки и реализация выгрузки (занятие 11). Необходимо продумать и описать отчёты (3-4 шт.), если это ещё не сделано. Отчёты - дополнительная информация, предполагающая объединение таблиц, группировку, сортировку и другие функции. Отчёты должны формироваться в системе автоматически, быть осмысленными и полезными. Необходимо программно реализовать методы для формирования отчётов и страницы для их отображения в приложении. После этого установить библиотеки для выгрузки отчётов в Word, Excel через Composer и написать скрипты, которые по запросу (например, кнопка на странице) формирует отчёты и отдает их пользователю на скачивание. Помимо этого, необходимо доработать приложение до соблюдения всех требований группы “Расширенные требования», описанные в модуле 1. На занятии 12 группы демонстрируют презентацию проделанной работы, а также рабочее приложение. Таким образом, результатом модуля 3 является полностью рабочее приложение, соответствующее всем требованиям. Файлы приложения должны быть опубликованы в ранее созданный репозиторий, НО при этом MVP отправляется в новую ветку с названием mvp, а текущее приложение остаётся в main. Модуль 4, КТ 4. Интеграция и развёртывание Данный модуль посвящен обертке разработанного приложения в Docker-контейнер, а также написанию документации к приложению. Выполняется следующая работа: - Контейнеризация приложения (занятия 13-14). Необходимо написать Dockerfile, копирующий код приложения и устанавливающий зависимости (если есть Composer). Написать docker-compose.yml с сервисами web, db. Настроить подключение приложения к контейнеру с БД. Убедиться, что вся система запускается одной командой docker-compose up вместе с загрузкой структуры БД. - Финальная доработка, документация (занятие 15). Необходимо написать финальную документацию (README.md с описанием проекта, инструкцией по запуску через Docker), а также упаковать приложение в новый репозиторий с тегом релиза. - Зачёт (занятие 16). Группы выступают с презентациями, в которых кратко отражены все аспекты проекта. Рассказ об архитектуре, пройденных этапах, проблемах и их решении. Ответы на вопросы. Предварительно преподаватель должен проверить Docker-приложение и репозиторий на работоспособность и соответствие всем требованиям.