Skip to content

ipratikk/Spendora

Repository files navigation

iOS Swift SwiftUI License

πŸš€ Spendora

A modern, beautifully crafted iOS expense tracking app built with SwiftUI and SwiftData.

Spendora helps you track, understand, and optimize your spending with a clean UI, powerful analytics, and seamless Apple ecosystem integration.


✨ Why Spendora?

Managing personal finances shouldn’t feel like a chore.

Spendora is designed to be:

  • ⚑ Fast
  • 🎯 Intuitive
  • πŸ“Š Insightful
  • πŸŒ™ Beautiful in both light & dark mode

🎯 Motivation

Most expense tracking apps are either:

  • Too complex 🧩
  • Too boring 😴
  • Or too outdated πŸ•°οΈ

Spendora was built to fix that.

The goal was simple:

Build an expense tracker that is fast, beautiful, and actually enjoyable to use.


πŸ“± Features

πŸ’Έ Expense Tracking

  • Log expenses with title, amount, category, and notes
  • Attach receipt images
  • Clean and intuitive input flow

🧠 Smart Organization

  • Categorize expenses with icons and colors
  • Automatic grouping (Today, Yesterday, Weekly, Monthly)

🌍 Multi-Currency Support

  • Track expenses in multiple currencies
  • Automatic conversion to base currency

πŸ“Š Visual Analytics

  • Category breakdown (pie chart)
  • Monthly spending trends (bar chart)
  • Real-time insights into spending habits

☁️ Sync & Security

  • iCloud sync across devices
  • Face ID / biometric authentication

🎨 Beautiful UI

  • Fully optimized for Light & Dark mode
  • Gradient-based design system
  • Smooth animations & transitions

πŸ“Έ Screenshots

πŸ“Š Dashboard (Transactions & Grouping)

Grouped sections like Today, Yesterday, Last Week with realistic data.


βž• Add Expense (Filled Form)

Realistic filled state with selected category.


🧾 Category Summary

Clear breakdown of spending across categories.


πŸ“ˆ Analytics (Charts)

Understand your spending patterns visually.


πŸ” Authentication

Secure login with Apple Sign In & Face ID.


πŸ—οΈ Tech Stack

  • SwiftUI – Declarative UI framework
  • SwiftData – Modern persistence layer
  • Charts – Native data visualization
  • Combine – Reactive programming
  • iCloud – Sync & storage

🧩 Architecture

Spendora follows a clean, scalable architecture:

  • MVVM – Separation of UI and business logic
  • SwiftData – Modern persistence layer with reactive updates
  • Feature-based modular structure
  • Reusable UI components
  • Deterministic snapshot testing for UI stability

πŸ“ Project Structure

Spendora/
β”œβ”€β”€ Spendora/                 # Main app code
β”‚   β”œβ”€β”€ Core/Mock/           # Mock data & testing utilities
β”‚   β”œβ”€β”€ Finances/            # Core finance features (charts, services, views)
β”‚   └── Views/               # App-level UI (Account, MainApp, Splash)
β”‚
β”œβ”€β”€ SharedModels/            # Shared models, extensions, reusable UI
β”‚   β”œβ”€β”€ Models/              # Spend, Category, User
β”‚   β”œβ”€β”€ Views/               # Reusable UI components
β”‚   └── Helper/              # Utilities & helpers
β”‚
β”œβ”€β”€ LoginFeature/            # Modular login feature (MVVM)
β”‚   β”œβ”€β”€ API/                 # Authentication + Keychain
β”‚   β”œβ”€β”€ ViewModel/
β”‚   └── Views/
β”‚
β”œβ”€β”€ SpendoraTests/           # Unit + Snapshot tests
β”‚   └── __Snapshots__/       # Snapshot images
β”‚
β”œβ”€β”€ SpendoraUITests/         # UI tests
β”œβ”€β”€ Screenshots/             # README images (curated snapshots)
└── README.md

πŸš€ Getting Started

Prerequisites

  • iOS 17+
  • Xcode 15+
  • Apple ID (for iCloud sync)

Installation

git clone https://github.com/pragoel/Spendora.git
cd Spendora
open Spendora.xcodeproj

Run the app:

Cmd + R

πŸ§ͺ Example Usage

let spend = Spend(
    title: "Coffee at Starbucks",
    detail: "Morning coffee",
    amount: 5.50,
    currency: "USD",
    date: Date(),
    category: foodCategory,
    receiptImageDatas: [receiptImageData]
)

modelContext.insert(spend)

🀝 Contributing

Contributions are welcome!

  • Open issues for bugs or feature requests
  • Submit PRs for improvements

πŸ’¬ Support


πŸ‘¨β€πŸ’» Maintainer

Pratik Goel


⭐️ If you like this project

Give it a star ⭐️ β€” it helps a lot!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages