Приложение "Интроверт" 
Главное приложение нашей платформы.
Технологии 
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 
В зависимости от ситуации приложение может быть собрано с одной из трех конфигураций
- Production - если билд собирается в CI/CD из ветки 
master- Этот билд раскатывается на наших пользователей. Тут нет прямого доступа к инструментам разработки.
 
 - Release Candidate - если билд собирается в CI/CD из ветки 
release/*- Этот билд тестируется перед релизом. Тут есть прямой доступ к инструментам разработки.
 
 - Feature - в любом другом случае 
- Этот билд используется для тестирования и разработки. Тут есть прямой доступ к инструментам разработки.
 
 
Внутренние технологии 
Drift 
SQL Builder для управления локальной базой данных. У нас есть две базы данных - application и cache.
slang - i18n 
Для локализации мы используем slang. Файлы локализации представляются собой JSON файлы.
Release Flow 
Git Flow 
Мы используем стандартный Git Flow
Как мы работаем с репозиторием