Аннотация

В работе мы используем три подхода. Разработка отдельной серверной части для клиентов, разработка модуля в системе Appocore.io, разработка отдельного сервера на Node.js для вычислений (может быть реализовано как модуль для системы Appocore.io c графическим интерфейсом или без него отдельно без Appocore.io.

Back-end
Технологии для реализации серверной части

При разработке веб-приложений в Appomart мы следуем архитектуре при которой происходит полное отделение веб-приложения от сервера. Тем самым серверная часть используется исключительно для предоставления API-методов.

Основной стек технологий (Appocore.io)
Наименование Значение
Основной язык программирования PHP
Фреймворк Laravel
СУБД PostgreSQL
Кэширование данных File system / Redis
База аутентификации Laravel Passport (OAuth 0/2)
Веб-сокеты Laravel Websockets
База модульности Laravel Modules
Debug / логирование Laravel Debaguar, Laravel Telescope, Sentry
CI тестирование PHPUnit

* Данный стек, или его часть, может быть использована для реализации Whitelabel программных решений.

Для реализации высоконагруженных и изолированных серверных решений, в рамках Appocore.io, используется платформа Node.js.

Стек технологий для slave-сервисов
Наименование Значение
Основной язык программирования Typescript
Фреймворк Nest.js / Express
ORM библиотека TypeORM
СУБД PostgreSQL / SQLite / Mongoose
Кэширование данных File system / Redis
Веб-сокеты Socket.io
Брокер сообщений микросервисов Redis / RabbitMQ / gRPC / Kafka
База аутентификации Passport
Отслеживание ошибок TSLint, Prettier
CI тестирование Jest

* Данный стек, или его часть, может быть использована для реализации Whitelabel программных решений.

Дополнительные подходы к разработке
  • SMS уведомления - Использование сервиса SMSAero.
  • Уведомления в браузере - Использование сервиса Onesignal.
  • Увемдоелния на почту - Использование сервиса Mailgun.
  • Мобильные уведомления - Использование сервисов APNS (iOS) и Google Firebase (Android).
  • Докеризация - Главным инструментом изоляции является Docker. Альтернативным подходом при реализации энтерпрайз проектов может быть Kubernetes (Object Storage).
  • Непрерывная поставка обновлений - Технология CD доступна для интеграции через сервисы Gitlab для клиент-серверных приложений, по согласованию с заказчиком.
  • Интернационализация текстовых данных - Поддержка локализации серверных уведомлений.
  • Кластеризация данных - При большой нагрузке на системы хранения данных (БД, файловое хранение) рассматривается возможность реализации системы дубликатов сервера хранения. Данный подход обдумывается при распространении проекта на межрегиональном уровне, где требуются дубликаты серверов на разных континентах, с использованием технологий S3 (DigitalOcean, Yandex Cloud).
  • Изоляция данных - База данных, текстовые и медиа данные, а так же кэшируемые данные, изолируются в отдельных субъектах платформы на базе технологий S3.
  • Платежи - Внедрение и подключение работы с платежным терминалом банка Tinkoff для реализации о оплаты за требуемые представляемые услуги или товары.
  • Система подписок - Внедрение и подключение работы с подписками в магазинах App Store и Google Play.
Front-end
Технологии для реализации клиентской части веб-интерфейса

Веб-приложение разрабатывается как SPA (Single Page Application) приложение, с поддержкой SSR-рендеринга, для индексации браузерами, и PWA технологии.

Основной стек технологий (Appocore.io)
Наименование Значение
Основной язык программирования Javascript
Фреймворк Vue (Nuxt.js)
Навигация Vue-router
Централизация хранилища данных Vuex
UI фреймворк Vuetify
Сборка Webpack
База иконок Material Design Icons
Debug / логирование Sentry
Отслеживание ошибок ESLint, Prettier
CI тестирование Jest

* Данный стек, или его часть, может быть использована для реализации Whitelabel программных решений.

Индивидуально, при реализации автономных SPA проектов, зависимых от серверной части Appocore.io, либо полноценных программных продуктов, может использоваться альтернативной стек технологий для клиентской части веб-интерфейса.

Альтернативный стек технологий
Наименование Значение
Основной язык программирования Typescript
Фреймворк React (Next.js)
Навигация React-router
Централизация хранилища данных Redux / Mobx
UI фреймворк Material UI
Сборка Webpack
База иконок Material Design Icons
Debug / логирование Sentry
Отслеживание ошибок TSLint, Prettier
CI тестирование Jest

* Данный стек, или его часть, может быть использована для реализации Whitelabel программных решений.

Дополнительные подходы к разработке
  • Веб-сокет поставка данных - Использование сервисов Pusher и Socket.io.
  • Уведомления в браузере - Использование сервиса Onesignal.
  • Докеризация - Сборка проекта в единый контейнер с использованием инструмента Docker.
  • Непрерывная поставка обновлений - Технология CD доступна для интеграции через сервисы Gitlab для клиент-серверных приложений, по согласованию с заказчиком.
  • Интернационализация текстовых данных - Поддержка локализации текстовых данных в веб-интерфейсе.
  • Метрика - Подключение и внедрение сервисов аналитики Google Analytics, Yandex Метрика.
  • Платежи - Внедрение и подключение работы с платежным терминалом банка Tinkoff для реализации о оплаты за требуемые представляемые услуги или товары.
Mobile
Технологии для реализации мобильных приложений

Кроссплатформенная разработка мобильных приложений позволяет оптимизировать клиентский бюджет и ускорить процесс разработки для платформ iOS и Android. Данный вариант подходит для большинства бизнес-решений.

Кросслатформенный стек (Основной)
Наименование Значение
Основной язык программирования Typescript
Фреймворк React Native (Expo)
Навигация React Navigation / React Native Navigation
Централизация хранилища данных Redux
UI фреймворк React Native Paper / Native Base
Инструменты графики Lottie, React Native Reanimated
База иконок React Native Vector Icons (8 packs)
Debug / логирование Sentry
Отслеживание ошибок TSlint, Prettier, Husky
CI тестирование Jest

* Данный стек, или его часть, может быть использована для реализации Whitelabel программных решений. Проект может включать в себя любые из актуальных Expo библиотек, которые покрывают необходимый функционал. Остальные библиотеки рассматриваются индивидуально.

Альтернативный стек рассматривается на перспективу, в рамках требуемого проекта, как замена основному кроссплатформенному походу.

Кросслатформенный стек (Альтернативный)
Наименование Значение
Основной язык программирования Dart
Фреймворк Flutter
Навигация Flutter Navigator API
Централизация хранилища данных Redux / Fish Redux API
UI фреймворк Native
Инструменты графики Lottie, Animation Controller API
База иконок Flutter Vector Icons
Debug / логирование Sentry
Отслеживание ошибок Dart Lint, Flutter VSCode extension
CI тестирование Dart Unit testing

Нативная реализация мобильных приложений подходит достаточно большим и сложным проектам, функционыльные требования которых не укладываются в рамки кроссплатформенных решений.

Нативный стек (iOS)
Наименование Значение
Основной язык программирования Swift / Objective-C
Фреймворк UIKit / Cocoapods
Централизация хранилища данных Redux
Инструменты графики Lottie
Debug / логирование Sentry
CI тестирование XCTest
Нативный стек (Android)
Наименование Значение
Основной язык программирования Kotlin / Java
Фреймворк Dagger 2
Централизация хранилища данных RxJava2
Инструменты графики Lottie, Glide
Debug / логирование Sentry, Google Crashlytics
Отслеживание ошибок Leak Canary
Тестирование Android Architecture Components, Espresso
Дополнительные подходы к разработке
  • Веб-сокет поставка данных - Использование сервисов Pusher и Socket.io.
  • Мобильные уведомления - Использование сервисов APNS (iOS) и Google Firebase (Android).
  • Непрерывная поставка обновлений - Технология OTA доступна для интеграции в реализацию кроссплатформенных мобильных приложений с использованием фреймворка React Native через сервисы Expo.
  • Интернационализация текстовых данных - Поддержка локализации текстовых данных в веб-интерфейсе.
  • Метрика - Подключение и внедрение сервисов аналитики Google Analytics, Yandex Метрика.
  • Платежи - Внедрение и подключение работы с платежным терминалом банка Tinkoff для реализации о оплаты за требуемые представляемые услуги или товары.