Примеры Flutter-проектов
MomsApp
Приложение для мам с функциями трекинга, публикаций и поддержки.
Платформа для отслеживания здоровья ребенка и мамы, чтения статей, планирования прогулок и управления прививками/лекарствами, с авторизацией через Firebase Auth.
Бэкенд и фронтенд: Разработал API на Strapi и кроссплатформенное приложение на Flutter. Настроил Stage/Prod-окружения, публикацию APK через Telegram-бота (Stage) и в сторах (Prod), интегрировал Shorebird для обновлений.
Публикации и контент: Реализовал статьи с категориями, лайками, просмотрами, избранным, stories, аффирмациями и тегами, а также документы (политики, соглашения).
Трекинг: Внедрил трекеры воды, кормления, сна, подгузников, прививок, лекарств и прогулок с кастомными пинами на карте (flutter_map) и статистикой (линейные/столбчатые графики).
Скачки развития: Создал календарь с разбивкой на недели с описанием периода развития и рекомендациями по уходу. Для каждого периода показаны навыки развития и актуальные для возраста игры.
Сервисные функции: Интегрировал пуши (дни рождения, аффирмации), in-app URL, deep links, уведомления об обновлениях (store/Shorebird). Гибкая система уведомлений и обработка версионности.
KegelFit
Доработка и оптимизация существующего мобильного приложения.
Улучшил UX/UI и переработал логику старта приложения для повышения стабильности и удобства пользователей. Проект требовал высокой точности дизайна и сложной логики навигации на основе условий запуска и состояния подписки.
Дизайн: Реализовал скейлинг через подмену MediaQuery, обеспечив точное соответствие макету на всех устройствах.
Сложность: Единообразный рендеринг на разных экранах.
Рефакторинг: Переработал навигацию (онбординг, покупка, триал, уведомления) в конечный автомат на BLoC, устранив хаотичные переходы.
Сложность: Гибкая поддержка динамических условий.
Результат: Повысил стабильность, упростил поддержку, улучшил UX и удовлетворенность заказчика.
Молодая Арктика
Мобильное приложение для молодежи Мурманской области.
Платформа для новостей, событий, волонтерских вакансий, магазина и медиа-контента с личным кабинетом и системой баллов. Включает 53 экрана.
Личный кабинет: Реализовал функционал управления профилем, баллами и покупками с интеграцией API для синхронизации данных. Обеспечение безопасности и плавной работы с большим объемом пользовательских данных.
Медиа-контент: Оптимизировал загрузку и отображение большого количества медиа (видео, изображения) с поддержкой оффлайн-доступа. Минимизация потребления ресурсов при высоком объеме контента.
Результат: Создал удобное приложение, повысившее вовлеченность молодежи в события региона. Ускорил доступ к контенту и упростил взаимодействие с платформой.


Invent
Мобильное приложение для инвентаризации с использованием QR-кодов.
Компактное приложение для регистрации, авторизации и управления инвентаризацией с поддержкой пакетной загрузки данных и экспорта QR-кодов.
Серверная часть: Настроил сервер (Node.js, Express, Parse Server) с адаптером Unisender для валидации email при регистрации и авторизации. Интеграция стороннего сервиса Unisender с Parse Server.
Инвентаризация: Реализовал пакетную загрузку объектов из XLS-файлов и экспорт QR-кодов в PDF для печати. Обработка больших XLS-файлов и генерация PDF с точным форматированием.
Результат: Упростил процесс инвентаризации, сократив время на обработку данных и обеспечив надежную работу с QR-кодами.


SemesterRus
Мобильное приложение для изучения русского языка как иностранного.
Платформа для уроков, тестов, экзаменов и диалогового обучения с ИИ, включающая редактор контента и обработку медиа.
Редактор контента: Разработал редактор для создания уроков, тестов и текстовых материалов с поддержкой медиа (изображения, видео, таблицы), тестов с выбором/сопоставлением ответов и ИИ-заданий (диалоги, эссе) на базе GPT-4o. Интеграция ИИ для проверки заданий и гибкое управление многоформатным контентом.
Обработка аудио: Автоматизировал обработку 1500 аудиофайлов, написав скрипт на FFmpeg для обрезки тишины и нормализации громкости. Оптимизация качества аудио без потери производительности.
Генерация изображений: Создал скрипт для генерации 2000+ изображений через DALL-E 3. Добавил раздел в админке для выбора альтернативных изображений с Pexels и Unsplash, устранив проблему низкокачественного контента. Фильтрация сгенерированных изображений и интеграция сторонних API.
Результат: Ускорил создание контента, улучшил качество аудио и визуальных материалов, обеспечив вовлекающий опыт обучения.


NRK87.
Приложение для работы с трекерами, которые продаются вместе с детской одеждой бренда NRK87.
Главная функция приложения - карта с маркерами трекеров, которые нужно было отрисовать самостоятельно. Для это нужно скачать аватарку, нарисовать маркер в буфере в нужном размере (т к google_maps_flutter рисует маркеры в размер), сохранить полученное на диск (на будущее), массив байт передать в BitmapDescriptor.
Результат: Обеспечил плавное отображение кастомных маркеров на карте, улучшив UX и производительность благодаря кэшированию.


Добро.будильник
Приложение будильник, который переводит деньги в пользу благотворительных фондов, если человек проспал.
Функция будильника оказалась не самой простой задачей для Flutter. Объединив ограничения ОС приняли решение использовать flutter_local_notifications, так как библиотека может показывать нотификации по расписанию.
Для android в нативном проекте настроили показ Activity в полноэкранном режиме и дали возможность запускать ее на заблокированном экране.
Для iOS сложнее: назначаем серию нотификаций (раз в 3 секунды в течении минуты).
Довольно сложной задачей было настроить рекуррентные платежи с помощью tinkoff_acquiring, т к заведение карты складывается из нескольких запросов + использование WebView для прохождения 3-D Secure.


ProjectV и Coffeecell
Многофункциональная платформа для работы в компаниях, основанных на сети независимых дистрибьюторов. В приложениях множество функций: обучение, новости, чат, события, календарь, отчеты, кошельки и т д.
Портировали проект с нативных платформ на Flutter, в том числе с поддержкой Web.
Капча Geetest: Разработал кастомную реализацию Geetest CAPTCHA, включая поддержку Web через js.context.callMethod и js.allowInterop, до появления официальной библиотеки gt3_flutter_plugin, которая не поддерживает Web. Интеграция JavaScript-логики в Flutter Web с надежной обработкой callback’ов
Редактор публикаций: Реализовал редактор для создания постов с медиа (фото, видео, товары, галереи). Добавлена кнопка вставки медиа рядом с кареткой на пустой строке. Для точного позиционирования каретки использовал RenderEditable.getLocalRectForCaret через глобальные ключи, вместо ресурсоемкого TextPainter. Написал тесты для защиты от изменений в Flutter SDK.

Календарь
Модуль календаря для нескольких приложений с гибкой интеграцией и кастомизацией.
Универсальный календарь с поддержкой разных источников данных, переходов к контенту и настраиваемым интерфейсом, включая ночную тему.
Гибкая архитектура: Разработал систему CalendarSource, позволяющую приложениям наследовать и регистрировать источники данных для календаря, с гибкой настройкой стилей и UI. Сложность: Обеспечение универсальности для разных приложений при сохранении производительности.
Оптимизация рендеринга: Реализовал рендеринг объектов через CustomPainter с кэшированием TextPainter для минимизации затрат на расчет размеров. Анимации переходов (неделя, месяц, год) оптимизированы с использованием форка local_hero и библиотеки flutter_animate. Сложность: Баланс между плавными анимациями и высокой производительностью при большом количестве объектов.
Результат: Создал масштабируемый и производительный модуль, обеспечивающий плавный UX и легкую интеграцию в разные приложения.
UME
Многофункциональная платформа для ухода за питомцами: отслеживание здоровья, подбор питания, покупка товаров, хранение документов и планирование событий.
Разработал гибкий модуль магазина, поддерживающий единый магазин для UME/NRK87 и маркетплейс для других приложений. Настроил динамическое оформление заказа (до 6 серверных запросов) с учетом параметров (цвета, доставка, оплата баллами, выбор питомца для начисления бонусов). Сложность: Адаптация UI и логики под разные приложения и серверные данные.
Создал кастомные анимации для иконок bottom bar с использованием Rive, повысив интерактивность интерфейса. Сложность: Оптимизация анимаций для плавной работы на всех устройствах.
Результат: Реализовал универсальный модуль магазина, упростив интеграцию, и улучшил UX благодаря динамичным анимациям, повысив вовлеченность пользователей.

Сверстано с помощью Dart Jaspr
