FinanceApp — iOS-приложение на SwiftUI для управления личными финансами с поддержкой транзакций, категорий, аналитики и собственного persistence-слоя (SwiftData + CoreData).
Проект разработан в рамках Летней школы мобильной разработки от Яндекса и ориентирован на построение архитектурно устойчивого iOS-приложения с разделением ответственности между слоями системы.
- Добавление и редактирование доходов и расходов.
- Привязка операций к категориям.
- Поддержка различных счетов.
- Форматирование валют и корректная обработка сумм.
- Создание и редактирование категорий.
- Разделение на доходные и расходные категории.
- Использование категорий при создании транзакций.
- Отображение списка транзакций.
- Сортировка и фильтрация.
- Просмотр подробной информации по каждой операции.
- Статистика по операциям.
- Визуализация изменения баланса.
- Отображение динамики финансового состояния.
- Расчёт текущего баланса.
- История изменения баланса.
- Визуальное представление финансовых изменений.
ScreenRecording_06-27-2025.21-55-35_1.MP4
2025-07-21.13.38.22.mov
2025-07-21.14.36.30.mov
2025-07-24.18.31.47.mov
Проект построен с разделением на слои:
Core/
Models/
Services/
FileCache/
Persistence/
SwiftDataStores/
CoreData/
Entity/
Protocols/
Features/
Transactions/
Categories/
History/
Analysis/
Invoice/
MainTab/
Networking/
Extensions/
Helpers/
Utilities/
- MVVM
- Dependency Injection (ServicesContainer)
- Разделение бизнес-логики и UI
- Абстракции через протоколы
- Возможность смены реализации persistence-слоя
- Обработка ошибок на уровне инфраструктуры
Бизнес-логика инкапсулирована в сервисах и не зависит напрямую от конкретной реализации хранилища.
В проекте реализована поддержка двух механизмов хранения данных:
- SwiftData
- CoreData
Дополнительно реализованы:
- фабрика стораджей,
- контейнер-провайдеры,
- миграции,
- backup-слой.
Это позволяет тестировать разные реализации хранения и изолировать инфраструктурный слой от UI и бизнес-логики.
В проекте присутствует базовый networking-слой:
- NetworkClient
- поддержка HTTP-методов
- собственная модель ошибок
- проверка сетевого состояния
Слой заложен для возможного расширения приложения до онлайн-сценариев.
- Swift
- SwiftUI
- SwiftData
- CoreData
- MVVM
- Dependency Injection
- Unit tests
- UI tests
В проекте реализованы:
- Unit-тесты бизнес-логики.
- UI-тесты пользовательских сценариев.
- Проверка сериализации и преобразования данных.
- Синхронизация с сервером.
- Поддержка нескольких валют.
- Расширенная аналитика.
- Экспорт и импорт данных.
- Расширение системы категорий и отчётов.
Проект разработан Матвеенко Эльвирой, студенткой 2 курса направления «Программная инженерия».