Все статьи

Создание журнального приложения с использованием Flutter, Firebase и Claude AI

·MAGMA

Реализация проекта журнального приложения, использующего искусственный интеллект для предоставления пользователю осмысленных размышлений о написанном, была поставлена как задача для одного разработчика. Спустя шесть месяцев результатом стало приложение Eventide: Journal & Mood, доступное в Google Play, и построенное с использованием технологий Flutter, Firebase и Claude AI.

Выбор технологического стека

Для реализации приложения была выбрана следующая технологическая база:

  • Flutter (последняя стабильная версия): фреймворк для разработки кроссплатформенных приложений.
  • Dart с строгим управлением нулевыми значениями: язык программирования, используемый в Flutter.
  • Riverpod + riverpod_generator: библиотека для управления состоянием приложения.
  • go_router: библиотека для навигации между экранами.
  • Firebase (Auth + Firestore + Cloud Functions): платформа для разработки серверной части, аутентификации и хранения данных.
  • Anthropic Claude API через Firebase Cloud Functions: интеграция с искусственным интеллектом для анализа пользовательского контента.
  • RevenueCat SDK: сервис для управления подписками и выручкой.
  • Hive: библиотека для локального хранения данных.
  • fl_chart: библиотека для создания графиков и диаграмм.
  • Material 3 и Google Fonts (Lora + Inter): дизайн-компоненты и шрифты для создания интерфейса приложения.

Почему выбран Flutter

Flutter был выбран из-за возможности разработки приложений для iOS и Android из единой кодовой базы. Другим претендентом был React Native, но преимущества рендеринга в Flutter, особенно при создании кастомных анимаций, оказались решающими. Быстрый цикл перезагрузки (hot reload) позволял мгновенно видеть результаты изменений в коде, что существенно ускоряло процесс разработки.

Выбор библиотеки для управления состоянием

Для управления состоянием приложения была выбрана библиотека Riverpod. После оценки альтернатив (Bloc и Provider), Riverpod показал наилучший баланс между сложностью и производительностью для проекта одного разработчика. Provider, хотя и проще в использовании, не масштабируется хорошо при наличии вычисляемого состояния, зависящего от нескольких источников. Bloc же, будучи мощной библиотекой, требовал слишком много boilerplate-кода для событий и состояний, что было неоправданно для проекта с высокой скоростью разработки.

Результат и опыт

Разработка приложения Eventide: Journal & Mood показала эффективность выбранных технологий и библиотек. Использование Flutter обеспечило высокую производительность и качество интерфейса, а интеграция с Firebase и Claude AI позволила реализовать функциональность искусственного интеллекта. Опыт разработки этого приложения стал ценным уроком в области выбора технологического стека и управления сложностью проекта.

Вернуться к блогу