Skip to content

Latest commit

 

History

History

README.md

FinApp Frontend

Кроссплатформенный клиент для сервиса FinApp, созданный с использованием фреймворка Flutter. Приложение позволяет пользователям подключать свои банковские счета, отслеживать балансы и анализировать транзакции в едином интерфейсе.

✨ Возможности

  • Безопасная аутентификация и управление сессиями: Вход и регистрация с сохранением сессии между перезапусками приложения с помощью shared_preferences.
  • Динамическая панель счетов: Главный экран отображает консолидированную информацию по всем счетам, сгруппированную по банкам. Каждая карточка банка показывает промежуточный итог, а в шапке приложения виден общий баланс по всем активам.
  • Проактивная синхронизация данных: При запуске приложения или ручном обновлении (pull-to-refresh) происходит автоматический опрос всех активных подключений для получения самых свежих данных о счетах и балансах.
  • Управление подключениями: Удобный интерфейс для добавления новых банков (список загружается с сервера) и удаления существующих подключений.
  • Детальная информация: Просмотр расширенных данных по каждому счету, включая имя владельца, тип счета и его текущий статус.
  • Аналитика оборотов: Возможность рассчитать и просмотреть общую сумму поступлений и списаний по счету за выбранный период.
  • Продуманный UX: Приложение использует индикаторы загрузки, всплывающие уведомления (SnackBar) для обратной связи и отформатированный вывод валют для лучшего восприятия.

🛠️ Технологический стек

  • Фреймворк: Flutter
  • Язык: Dart
  • Управление состоянием: Provider для внедрения зависимостей (DI) и управления состоянием.
  • Локальное хранилище: shared_preferences для сохранения токена аутентификации и ID пользователя.
  • Работа с сетью: Пакет http для выполнения всех запросов к REST API.
  • UI и графика:
    • flutter_svg для качественного отображения иконок банков.
    • intl для корректного форматирования дат и валют.

🚀 Начало работы

Предварительные требования

  1. Flutter SDK: Убедитесь, что у вас установлен Flutter. Для проверки выполните flutter doctor. Инструкции по установке.
  2. Запущенный Backend: Фронтенд-приложение требует работающего бэкенда. Убедитесь, что он запущен и доступен по сети. Инструкции находятся в главном README.md.

Конфигурация

Это самый важный шаг! Чтобы приложение могло подключиться к вашему локальному бэкенд-серверу, необходимо указать правильный IP-адрес.

  1. Откройте файл lib/utils/constants.dart.
  2. Найдите IP-адрес вашего компьютера в локальной сети (например, 192.168.1.100).
    • macOS/Linux: ifconfig | grep "inet "
    • Windows: ipconfig (ищите "IPv4-адрес")
  3. Замените значение константы _yourComputerIP на ваш IP:
    // lib/utils/constants.dart
    const String _yourComputerIP = "192.168.1.100"; // <-- ЗАМЕНИТЕ ЭТОТ IP!
  4. Если вы запускаете Android-эмулятор, используйте API_BASE_URL_ANDROID_EMULATOR. Во всех остальных случаях (iOS-симулятор, Web, Desktop, реальное устройство) подойдет API_BASE_URL_NETWORK.

Установка и запуск

  1. Установите зависимости:
    flutter pub get
  2. Запустите приложение на целевой платформе:
    flutter run -d chrome   # Для Web
    flutter run -d macos    # Для macOS
    flutter run             # Для подключенного мобильного устройства или эмулятора

🗂️ Структура проекта

Код организован по принципу "feature-first", где каждая функциональная часть имеет свои модели, экраны и сервисы.

frontend/
├── lib/
│   ├── api/            # Логика для взаимодействия с API бэкенда.
│   ├── models/         # Классы моделей данных (Account, Bank, Connection).
│   ├── providers/      # ChangeNotifier'ы для управления состоянием (e.g., AuthProvider).
│   ├── screens/        # UI-экраны приложения (Login, Accounts, Connections).
│   ├── utils/          # Вспомогательные утилиты, константы и форматирование.
│   ├── widgets/        # Переиспользуемые UI-компоненты (карточки, кнопки).
│   └── main.dart       # Точка входа в приложение, настройка роутинга и провайдеров.
├── assets/             # Статические ресурсы (если есть).
├── android/, ios/, ... # Платформо-специфичные файлы.
└── pubspec.yaml        # Файл конфигурации проекта и зависимостей.

📦 Сборка для релиза

Для создания релизной версии приложения используйте команду flutter build:```bash flutter build web flutter build apk flutter build ipa flutter build windows