UIKit · Firebase Auth · Cloud Firestore · Interactive Charts
XpenseTracker (SpendR) is a personal-finance iOS app to record expenses and income, organise them with custom tags, and visualise spending patterns over time. It's a portfolio project focused on showing UIKit fluency, Firebase backend integration and clean MVVM separation.
Built with UIKit screens, Firebase Authentication (email/password + Google Sign-In) and Cloud Firestore for persistence. Dependencies are managed with CocoaPods.
| Track | Record expenses and income with amount, category, description and date. Mark each as income or expense. |
| Organise | Custom tags per movement for flexible categorisation. Tag manager in the user page. |
| Visualise | Interactive charts of spending trends and category breakdowns. |
| Filter | Sortable, filterable history table with real-time balance updates. |
| Auth | Email + password sign-up/login backed by Firebase Auth. Google Sign-In for one-tap onboarding. |
| Profile | Edit personal details, preferred currency, and tag library from the user page. |
| Screen | What it does |
|---|---|
| Home | Personalised welcome, dynamic balance, "Add Movement" CTA, sortable history |
| New Movement | Capture amount, category, description, tags and income/expense flag |
| Movement Detail | Full transaction info with single-tap delete |
| User Page | Profile editor, currency selector, tag management |
| Graph | Interactive chart of spending trends and category mix |
| Login / Sign-Up | Firebase email + password or Google Sign-In |
SpendR/ CocoaPods workspace
Podfile CocoaPods dependency manifest
SpendR.xcworkspace Open this (not the .xcodeproj)
SpendR/ Main app target
AppComponents/ AppDelegate / SceneDelegate
Controllers/
LoggedInViews/ Home, Graph, UserPage view controllers
LoggedOutViews/ Login / SignUp view controllers
Models/ Movement, Tag, User
Utils/ FirebaseOperations and helpers
Extensions/ UIKit conveniences
Pods/ Resolved CocoaPods (gitignored in real life)
Requirements: Xcode 14+ · iOS 15+ · CocoaPods · Firebase project (Auth + Cloud Firestore enabled)
git clone https://github.com/jlcl11/XpenseTracker.git
cd XpenseTracker/SpendR
pod install
open SpendR.xcworkspaceDrop your GoogleService-Info.plist into the project (Firebase console → iOS app), enable Email/Password + Google Sign-In providers, then build and run.
| Technology | Role |
|---|---|
| UIKit | Core view layer — controllers, storyboards, programmatic constraints |
| Firebase Auth | Email + Google Sign-In authentication |
| Cloud Firestore | Cloud-stored documents for movements, tags and user profile |
| Charts | Interactive chart rendering for spending trends |
| SymbolPicker | Symbol picker for tag and category icons |
| CocoaPods | Dependency management |
Built by Jose Luis Corral Lopez · Portfolio sample showing UIKit + Firebase


