Skip to content
/ SHMR Public

Проект на SwiftUI: приложение для управления личными финансами, позволяющее добавлять транзакции, работать с категориями и отслеживать аналитику расходов. Разработан в рамках Летней школы мобильной разработки от Яндекса.

Notifications You must be signed in to change notification settings

elinnlle/SHMR

Repository files navigation

FinanceApp 💰

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-слоя
  • Обработка ошибок на уровне инфраструктуры

Бизнес-логика инкапсулирована в сервисах и не зависит напрямую от конкретной реализации хранилища.


Persistence-слой

В проекте реализована поддержка двух механизмов хранения данных:

  • SwiftData
  • CoreData

Дополнительно реализованы:

  • фабрика стораджей,
  • контейнер-провайдеры,
  • миграции,
  • backup-слой.

Это позволяет тестировать разные реализации хранения и изолировать инфраструктурный слой от UI и бизнес-логики.


Networking

В проекте присутствует базовый networking-слой:

  • NetworkClient
  • поддержка HTTP-методов
  • собственная модель ошибок
  • проверка сетевого состояния

Слой заложен для возможного расширения приложения до онлайн-сценариев.


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

  • Swift
  • SwiftUI
  • SwiftData
  • CoreData
  • MVVM
  • Dependency Injection
  • Unit tests
  • UI tests

Тестирование

В проекте реализованы:

  • Unit-тесты бизнес-логики.
  • UI-тесты пользовательских сценариев.
  • Проверка сериализации и преобразования данных.

Возможности развития

  • Синхронизация с сервером.
  • Поддержка нескольких валют.
  • Расширенная аналитика.
  • Экспорт и импорт данных.
  • Расширение системы категорий и отчётов.

Автор

Проект разработан Матвеенко Эльвирой, студенткой 2 курса направления «Программная инженерия».

About

Проект на SwiftUI: приложение для управления личными финансами, позволяющее добавлять транзакции, работать с категориями и отслеживать аналитику расходов. Разработан в рамках Летней школы мобильной разработки от Яндекса.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages