Skip to content
iOSAndroid

Приложение "Интроверт" ​

Главное приложение нашей платформы.

Технологии ​

Flutter ​

Фреймворк для создания мобильных, десктопных и веб приложений.

Мы стараемся всегда использовать самую последнюю стабильную версию Flutter. Обновляемся через 2-3 недели после релиза, чтобы появились первые фиксы.

На момент написания статьи мы используем Flutter 3.24

Firebase - Remote Config ​

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

На момент написания статьи в Firebase Remote Config хранятся ссылки, фича-флаги, настройки, виджеты и шаблоны.

Firebase - Analytics ​

Подключена для интеграции с Remote Config и более гибкого управления параметрами.

Firebase - Messaging ​

Используем для получения пуш-уведомлений. Интеграция пуш-уведомлений через бэкенд.

Sentry ​

Мониторинг ошибок

DivKit ​

Фреймворк для рендеринга сериализуемой верстки, которую можно пересылать через сеть. Используется для внедрения реклами и часто изменяющихся виджетов.

На момент написания статьи мы используем версию Flutter клиента 0.5.0

GitLab CI/CD ​

Мы самостоятельно управляем CI/CD процессом. Скрипты и пайплайны пишутся внутри команды без аутсорса.

Архитектура ​

Используется чистая архитектура как фундамент

Приложение делится на самостоятельные фичи (модули). Каждая фича делится на три слоя - data, domain, presentation. Подробнее можно прочитать в интернете.

State Management ​

Для управления состоянием мы используем готовый мини-фреймворк - bloc. Условно это State Machine, которая может иметь несколько состояний и UI зависит от текущего состояния.

Feature Flags ​

Мы используем концепцию фича-флагов. Чаще всего новая фича закрывается фича-флагом и отправляется в релиз.

Это позволяет контроллировать процесс интеграции фичи в продакшен в условиях rapid разработки, когда фича разрабатывается асинхронно с другими командами.

UI Kit ​

Мы используем универсальный UI Kit построенный на базе дизайн-системы Интроверта.

Build Type ​

В зависимости от ситуации приложение может быть собрано с одной из трех конфигураций

  1. Production - если билд собирается в CI/CD из ветки master
    1. Этот билд раскатывается на наших пользователей. Тут нет прямого доступа к инструментам разработки.
  2. Release Candidate - если билд собирается в CI/CD из ветки release/*
    1. Этот билд тестируется перед релизом. Тут есть прямой доступ к инструментам разработки.
  3. Feature - в любом другом случае
    1. Этот билд используется для тестирования и разработки. Тут есть прямой доступ к инструментам разработки.

Внутренние технологии ​

Drift ​

SQL Builder для управления локальной базой данных. У нас есть две базы данных - application и cache.

slang - i18n ​

Для локализации мы используем slang. Файлы локализации представляются собой JSON файлы.

Release Flow ​

Как мы релизим

Git Flow ​

Мы используем стандартный Git Flow

Как мы работаем с репозиторием

Авторы

The avatar of contributor named as melvspace melvspace
The avatar of contributor named as Vadim Melnikov Vadim Melnikov

История