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

История