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 Arutyun Gevorkyan Arutyun Gevorkyan
The avatar of contributor named as Pavel Nochevnoy Pavel Nochevnoy

История