Skip to content

Latest commit

 

History

History
73 lines (51 loc) · 3.03 KB

README.md

File metadata and controls

73 lines (51 loc) · 3.03 KB
Login Updated Transaction Feed Updated Transaction Feed Transaction Details

Personal finances app using Starling bank's API with RxSwift + MVVM architecture

Requirements

  • iOS 13+
  • Xcode 14

Highlights and benefits

  • Reactive programming - Declarative programming paradigm concerned with data streams and the propagation of change.
  • MVVM architecture - Better application of SOLID principles and encapsulation of components. Offering better testability and flexibility.

Summary

This app currently shows all accounts and will eventually show the balance, overdraft, pending transactions. Atm, it shows one demo account and transitions into a UITabViewController where you can switch between transactions and savings goals.

All network requests and errors are handled by the ViewModel through bindings.

You can create a new savings goal in the savings section.

Changes in the UI and UX will be made along with writing unit tests.

Starling Bank's API

https://developer.starlingbank.com/docs

Features

Swift Package Manager for managing dependencies

  • RxSwift, RxCocoa - Using Reactive Programming for asynchronous network requests and bindings.
  • Moya, RxMoya - Using Moya to encapsulate specific requests by category. e.g. AccountsService, TransactionFeedService..
  • RxTest - Testing value changes over time

Upcoming / Tasks

  • Authentication
  • ✅ ViewModel testing with RxTest
  • Accounts
  • ✅ Transaction Feed Details
  • Savings goals
  • ✅ Login screen (view)
  • ✅ Transaction View (design change)
  • Filters
  • Login screen (functionality) (in progress, 6-APR)
  • Budget View
  • Spending Insights
  • Card settings
  • Analytics View
  • SwiftUI version

Contributing

Feel free to send me an email if you want to contribute to extending this app. Or you can just fork the repo and make your own changes and submit a PR. christian.leovido@gmail.com

I would appreciate any feedback as I'm constantly looking for more efficient ways of writing code and building software. 😄

Screenshots

Savings

Transaction Feed

Search results