Introduction
Expense Counter allows users to keep track of their expenses.
Expenses can be organized into categories and summarized by month.
Categories can also be customized.
Features

Expenses summary
Summarize monthly expenses by category

Manage categories
Create your own categories or choose the defaults

Manage expenses
Manage all your expenses for the month, including deleting or modifying them.

Add expense
Add an expense to a category

Add category
Create a custom category to fit your need
Tech stack

SwiftUI
The app’s frontend was built using SwiftUI, with a minimum target iOS version of 16.4

Core Data
The app’s data is stored locally using the best integrated database for native iOS development
Architecture Design
UML class diagram

CoreData diagram

Challenges
I had some trouble designing the app’s architecture. This was likely because I’m not super familiar with SwiftUI data flow yet at that time, especially how data should flow from one view to another.
I took a step back from building the app and focused on redesigning how data flows between different views.
As a result, I was able to fix the data flow problem and gained a clearer understanding of what data should be displayed on each screen.
Lessons learned
- Learned the fundamentals of iOS development, SwiftUI, and Core Data.
- Write or create a clear scope, data model, data flow diagram, and screen designs for the app before building it. This helps avoid any rework during execution.