Product Name and Description
Expense Tracker is an budgeting and expense tracking app that helps users reach their budgeting goals while staying organized for tax season. Users simply upload their expenses by taking a picture of their receipts, and the app's built-in AI will create the purchase details and suggest categories automatically. Users can also edit the expenses for accuracy or leaving a note. Expenses are organized into tax-relevant categories inaccordance with with CRA tax code, while budeting tools help users understand where they are spending their money. This app uses supabase for authentication/data/storage, and it also supports receipt image handling and export features, including a Gemini-powered AI agent for receipt parsing and tax related inquiries/tips.
Names and contact Info:
Amanbir - abehniwa@uwaterloo.ca
David - dkofman@uwaterloo.ca
Devin - dyli@uwaterloo.ca
Marco - z253chen1@uwaterloo.ca
Home Page Screenshot

Link to Youtube Video: https://www.youtube.com/watch?v=-L_7dJvm79A
- For a more detailed breakdown of the features, please scroll below to see the Usage Guide
Software releases
Final submission: Version 1.0.0 final release
List of third party libraries used:
- JetBrains Compose Multiplatform
- AndroidX UI/runtime libaries:
- activity-compose:1.12.2
- appcompat:1.7.1
- lifecycle compose/runtime 2.9.6
- AndroidX data libaries (Andriod compatibility):
- Rooms: room-runtime, room-compiler 2.8.4
- SQLite bundled 2.6.2
- Ktor client stack: ktor-client-core/android/java/darwin 3.3.3
- Kotlinx libraries:
- kotlinx-serialization-json:1.7.3,
- kotlinx-datetime:0.7.1
- kotlinx-coroutines-swing:1.10.2
- Supabase Kotlin SDK (for backend Auth, database, and storage integration):
- auth-kt, postgrest-kt, storage-kt
- images/PDF/files (For OCR and export data):
- coil-compose:2.6.0
- okio:3.17.0
- openpdf:1.3.30
- org.jetbrains.skia
- Testing dependencies include:
- org.jetbrains.kotlin:kotlin-test
- org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1
List of external source code references used: These resources were referenced for ideas and implementation guidance only, no code from these sites were copy and pasted verbatim
- Source: Kotlin docs: https://kotlinlang.org/docs/home.html
- Used for: Kotlin language syntax, coroutines, serialization patterns
- Modifications made: Reference only (only ideas were referenced)
- Source: Android dev: https://developer.android.com/kotlin
- Used for: Android/Kotlin best practices and API usage guidance
- Modifications made: Reference only (only ideas were referenced)
- Source: How to kotlin video by Google: https://www.youtube.com/watch?v=6P20npkvcb8
- Source: Supabase Kotlin Auth documentation
- URL: https://supabase.com/docs/reference/kotlin/auth-signinwithpassword
- Used for: Email sign-in/sign-up and password reset flow
- Referenced location: SupabaseAuthRepository.kt
- Modifications made: Adapted the idea to implement the repository pattern for this app
- Source: Coil Compose documentation
Here's our Team Contract
Here's our Project Proposal
Here's our Meeting Minutes
Here's our Team Reflections Page
Here's our getting started page
Use mermaid.live to visualize the diagrams:
Here's our ERD Diagram
Here's our Class Diagram
After you pull our changes, please do a cold boot otherwise you won't be able to log in or create account. Furthermore, if you are using school wifi, please disable school wifi and ensure that you have hotspot enabled. The app requests sometimes gets blocked by the university, resulting in failure to log in and register for an account. If you still have a problem, see the trouble shoot page in our getting started wiki or reach out to one of the team members and we will respond swiftly.
Additionally, in order to use the core functionality of this app (i.e. receipt scanning, tax advisor, budget categorization) you will need to set up the local envrionment variables.
Add your Gemini API key to local.properties (project root):
GEMINI_API_KEY=[YOUR_KEY]
# Can use the key provided above or create one for free in https://aistudio.google.com/We implemented the two optional requirements for extra grades.
- Multi-platform support on Andriod, Desktop and IOS.
- We also implemented the second optional requirement of Web Services, where we used external API from gemini in to implement our receipt scanning and tax advisor agent features. The API draws real-time data to answer tax inquries and the latest deduction policy changes in 2026
Learn more about Kotlin Multiplatform…