Веб-разработка. Разработка с нуля. Пожелания и особенности: Цель - создание веб?платформы, обладающей современной архитектурой, возможностью масштабирования и удобством дальнейшего расширения. --- ## Основные требования ### 1. Single Sign-In / Single Sign-On (SSO) * Реализация системы аутентификации через внешнего провайдера (OAuth2, OpenID Connect или аналогичный). * Единый вход для всех страниц и модулей платформы. * Поддержка хранения пользовательской сессии и её автоматического обновления. * Использование React Router или альтернативы с поддержкой вложенных маршрутов. * Структура проекта должна позволять быстро создавать новые страницы и подключать их к навигации. ### 3. Взаимодействие с API * Реализация клиентского слоя для работы с REST API. * Обработка ошибок, ретраи, централизованная конфигурация запросов. * Подготовка сервисного уровня для удобной интеграции будущих модулей. 1. Модульная архитектура Платформа состоит из родительского сайта, который: Выполняет авторизацию пользователя. Даёт доступ к отдельным модулям проекта через навигацию. Отображает глобальные элементы (например, глобальный попап статусов). Разработчику необходимо: 1.1. Создать модульную структуру проекта Модули должны быть независимыми компонентами, которые можно подключать/отключать. Каждый модуль должен корректно работать внутри родительского окружения. Реализовать механизм передачи контекста (авторизация, глобальные уведомления) между родителем и модулем. 2. Создание модуля “Файловое управление” Модуль должен интегрироваться в родительскую платформу и содержать следующие элементы: 2.1. Страница с плитками файлов Страница представляет собой сетку-плитку: 2.1.1. Первая плитка — кнопка “Загрузить файл” При клике открывает модальное окно загрузки (см. раздел 2.4). 2.1.2. Остальные плитки — отображение файлов Для каждого ранее загруженного файла: отображение основного имени кастомное имя (перекрывает основное, если есть) тег (если есть) дополнительная информация по API мини-иконка типа файла. 2.1.3. Клик по плитке файла Открывает меню действий: Скачать, Открыть, Удалить, Информация Меню реализовать через контекстное или всплывающее окно. 2.2. Кнопка перехода на таблицу На странице должна быть кнопка, ведущая к: отдельной странице с таблицей данных из БД (получение данных по API). 2.3. Модальное окно загрузки файла Открывается при клике на первую плитку. Функционал: 2.4.1. Загрузка основного файла drag&drop + кнопка выбора файла отображение имени/размера. 2.4.2. Ввод кастомного имени файла 2.4.3. Добавление тегов Поддержка нескольких тегов. 2.4.4. Загрузка дополнительных файлов (Приложений) Возможность прикрепить несколько файлов Отображение списка приложений. По нажатию “Загрузить” отправлять файлы через API. 2.5. Глобальный попап очереди загрузки После отправки: вывод уведомления-попапа (правый верхний угол) в попапе отображается очередь всех файлов на загрузку для каждого файла: статус по API прогресс-бар место в очереди попап можно свернуть/развернуть глобальный (видим во всех модулях через родителя). 2.6. Диалоговые окна при определённых статусах При получении из API некоторых статусов (список будет предоставлен) должно отображаться модальное окно с соответствующим уведомлением. Статусы отслеживаются глобальным слушателем. 3. Глобальная система статусов Необходимо реализовать: единое хранилище (Context/Redux) подписку модулей на статусы отображение глобального попапа в родительском модуле доступность попапа из любого модуля платформы. 4. Figma Есть полная визуализация: компоненты цвета стили отступы Разработчику необходимо придерживаться дизайна. 5. Результат работы 1. Родитель. 2. Полнофункциональный модуль. 3. Общая интеграция модуля с родителем. ## Технические требования * ReactJS (18+). * Cоблюдение принципов SOLID. * Поддержка адаптивной вёрстки. * Git как основная система контроля версий.