Приложение собрано при помощи BaaS подхода, когда бекенд выступает как услуга. В качестве бекенда использовался Google Firebase, фронт собран на Angular 6. Собраны два SPA для фронта:
Оба этих приложения используют общую библиотеку Angular @it-quasar/ha-js-core
,
которая обеспечивает звимодействе приложений с БД
Cloud Firesotre и файлохранилищем
Cloud Storage.
Для хранения данных использована NoSQL БД реального времени Cloud Firestore, которая позволяет взаимодействовать с данными в реальном времени из нескольких мест одновременно. Для того чтоб поддерживать работу с Cloud Firestore приложения реализованы по реактивной технологии, используя для связи с Cloud Firestore библиотеку @angular/fire. В приложении включена поддержка работы в офлайн режиме.
В качестве хранилища файлов для приложений (картинок, документов) использован Cloud Storage.
Сами файлы SPA храняться в CDN Google и разворчиваются там при помощи Firebase Hosting.
Проект сделан в виде моно-репозитория со следующими проектами:
projects/ha-js-core
- общая библиотека для взаимодействия с Cloud Firesotre и Cloud Storage;projects/ha-js-admin
- SPA админ-панелиprojects/ha-js-app
- SPA Ha.js
В SPA приложения Ha.js подключенны ServiceWorker's от Angular, которые занимаются загрузкой приложения и при необходимости обновлением его частей.
Lighthouse на SPA Ha.js показывает все метрики в зеленой зоне=^_^=
К проекту прикручена фреймворк для модульного тестирования Jest, но тесты написать пока не успел=(
- Приложение Ha.js: https://ha-js-7b0a9.firebaseapp.com/
- Админ-панель: https://ha-js-7b0a9.firebaseapp.com/admin/ (открывать нужно во владке Инкогнито, иначе SW не даст перейти)