Реализация проекта журнального приложения, использующего искусственный интеллект для предоставления пользователю осмысленных размышлений о написанном, была поставлена как задача для одного разработчика. Спустя шесть месяцев результатом стало приложение 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 позволила реализовать функциональность искусственного интеллекта. Опыт разработки этого приложения стал ценным уроком в области выбора технологического стека и управления сложностью проекта.