Приложение "Интроверт"
Главное приложение нашей платформы.
Технологии
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
Как мы работаем с репозиторием