Skip to content

Latest commit

Β 

History

37 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’ΈExpenseTracker

An iOS expense tracker that scans fiscal receipts, verifies them via FNS, automatically categorizes purchases and visualizes spending

πŸ“¦ Technologies

Swift SwiftUI AVFoundation Python FastAPI SQLite DistilBERT Xcode XCTest


πŸ¦„ Features

  • Manual income and expense tracking
  • QR scanning for fiscal receipts
  • Receipt verification through the FNS API
  • Automatic product normalization and categorization
  • Filters and sorting by date, amount and category
  • Spending charts by category and period
  • Local storage with backend synchronization
  • User authentication and profile editing

🎯 How to use

  1. Create an account or sign in
  2. Add an income or expense manually
  3. Scan a fiscal receipt QR code with the camera
  4. Review and edit the recognized receipt items
  5. Filter transactions and explore spending charts
  6. Open the profile screen to update account details

πŸ“š What I Learned

During this project I practiced building a full-stack iOS application that connects receipt scanning, financial data and a Python backend

  • πŸ“± SwiftUI application:

    • Architecture: Separated views, view models, services and data models
    • State management: Kept transaction lists, filters and profile data in sync across screens
  • 🧾 Receipt processing:

    • QR scanning: Built a camera scanner with AVFoundation
    • FNS integration: Sent fiscal receipt data to the backend and handled verification responses
  • 🧠 Automatic categorization:

    • Normalization: Cleaned receipt item names before classification
    • Categories: Mapped recognized products to expense categories and subcategories
  • πŸ“Š Expense analytics:

    • Filtering: Added sorting and category filters for transaction history
    • Charts: Visualized income and expenses by category and period
  • πŸ”— Client-server communication:

    • FastAPI: Built authentication, receipt and transaction endpoints
    • Synchronization: Connected local JSON storage with the backend API

🚦 Running the Project

Backend

  1. Open the backend directory
  2. Copy .env.example to .env and add your FNS credentials
  3. Run ./start.sh
  4. The API will be available at http://localhost:8000

iOS app

  1. Open ExpenseTracker.xcodeproj in Xcode
  2. Wait for Swift packages to resolve
  3. Start the backend
  4. Select a simulator or device and press Run (⌘R)

πŸ“ Project structure

ExpenseTracker/
β”œβ”€β”€ ExpenseTracker/
β”‚   β”œβ”€β”€ Core/                      # App shell, models, auth and profile
β”‚   β”œβ”€β”€ Components/                # Reusable SwiftUI components
β”‚   β”œβ”€β”€ ReceiptScanner/            # QR scanning and receipt confirmation
β”‚   β”œβ”€β”€ Services/                  # Network, FNS and API services
β”‚   β”œβ”€β”€ ViewModels/                # Transaction list and form logic
β”‚   β”œβ”€β”€ Views/                     # Expenses, filters and charts
β”‚   └── Assets.xcassets/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ api/                       # FNS client
β”‚   β”œβ”€β”€ models/                    # Category mappings and model config
β”‚   β”œβ”€β”€ services/                  # QR processing and categorization
β”‚   β”œβ”€β”€ database.py                # SQLite data layer
β”‚   └── main.py                    # FastAPI application
β”œβ”€β”€ ExpenseTrackerTests/
β”œβ”€β”€ ExpenseTrackerUITests/
└── ExpenseTracker.xcodeproj/

🎞️ Preview

ExpenseTracker app preview

About

πŸ’Έ An iOS app for tracking expenses by scanning and categorizing fiscal receipts

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages