Фронтенд
- Клиентское приложение (Shop PWA) — интернет-магазин для покупателей. Поддерживает каталог, поиск, карточку товара, корзину, оформление заказа, личный кабинет, отзывы и избранное.
- Административное приложение (Admin PWA) — рабочий инструмент для сотрудников. Предоставляет функции настройки функционала и конфигураций, публикация статей и новостей, модерации отзывов и работы с обращениями клиентов.
Стек
- Проект
- TypeScript - язык разработки
- idb - кэширование
- @ivanlog/gs - фреймворк UI
- @ivanlog/net - фреймворк API
- Для разработки
- webpack - упаковка
- scss - стилевой предпроцессор
- TS.Codegen.OpenAPIv3ToClientTS - кодогенератор TS API клиента
- gs.Codegen.Templates - кодогенератор GS UI-шаблонов
Структура решения
В виду большой части общего кода в обоих приложения они имеют общую кодовую базу. Разделение осуществляется через разную точку входа в код.
- frontend
- templates [папка шаблонизатора gs]
- site
- bin [результаты компиляции]
- htdocs_pm [сборка приложения магазина]
- htdocs_admin [сборка приложения админки]
- src [исходники]
- appAdmin
- controllers [контроллеры приложения]
- states [состояния приложения]
- config.ts [конфигурация приложения, точек доступа]
- index.ts [точка входа]
- AppAdmin.ts
- appProfiMall
- controllers [контроллеры приложения]
- states [состояния приложения]
- config.ts [конфигурация приложения, точек доступа]
- index.ts [точка входа]
- AppPM.ts
- classes [общий код]
Структура кода
Оба приложения имеют схожую структуру, поэтому описание общее.
Код делится на 2 группы:
- общий код (classes).
- уникальный код приложения (app*).
В общий код входит:
- api - кодосгенерированная папка с набором инструментов для работы с Profimoll API OpenAPIv3 (готовый клиент и набор всех моделей для работы с API).
- appControllers - набор абстрактных контроллеров.
- com - кодосгенерированная папка с набором компонентов gs.Templates + их написанные реализации (для переопределенных компонентов).
- enums - перечисления.
- models - общие модели (не API).
- states - абстрактные состояния.
- App.ts - абстратный класс приложения.
- *Tags.ts - перечисления тэгов.
- Helper*.ts - набор хелперов.
В уникальный код входит:
- controllers - набор котроллеров приложения (GUI, корзина, избранное и так далее).
- states - набор состояний приложения, в которых и описана основная бизнес логика по состоянию.
- index.ts - точка входа в программу для компиляции.
- App*.ts - основной класс приложения, в котором проходит инициализация всех уникальных элементов приложения (подробнее см.код).
Нотации
Верстка
- Соблюдать нотации gs для разработки паков.
- Название пака - profimall, сокращение pm
Документирование
- Использование jsdoc - по усмотрению, в случаях отсутсвия строгой типизации.
- Использование понятного наименования, которые позволит корректно читать код и его функционал.
- Обязательные комментарии для сложных блоков кода.
Контроль версий
Используем Git на https://git.ivanlog.ru/
Репозитории:
Запрос доступа у ivanlog.
Основная ветка разработки - dev.
Каждый разработчик заводит свою ветку по виду dev-имя_разработчика. В ней ведет разработку отдельный фич, после мержит в dev.
Основная ветка деплоя - main.
Шаблон версий для публикации vXX.XX.XX
Технические требования
- Для разработки - особых требований нет.
- Для деплоя - приложения полностью статичны. Необходимо обеспечить доступ к статичным файлам приложения и форвардинг запросов к API в одном домене для соблюдения CORS.
- Для использования - современный web-браузер с поддержкой актульных технологий (на 2025 год).
Назад