Skip to content

franciscoxcode/CoupleBudget

Repository files navigation

CoupleBudget

Status Swift UI Architecture Platform

CoupleBudget simplifies shared money management by clearly separating three concepts that most finance apps mix together:

  • Accounts — where real money lives (bank accounts, cash, cards)
  • Buckets — budgets and savings goals unified in one concept
  • People — personal loans without a complex loans system

Screenshots

Coming soon


Architecture

The project is split into two clear layers:

CoupleBudgetCore (Swift Package)

Shared domain logic, completely independent from the UI.

CoupleBudgetCore
├── Models       — data structures (Account, Bucket, MoneyMovement)
├── Rules        — business logic validations
└── Calculators  — derived financial values (balances, totals)

App Layer (iOS)

Built with SwiftUI following MVVM.

App
├── ViewModels   — prepare Core data for the UI
└── Views        — SwiftUI interface

The Core has no knowledge of the UI. The UI depends on the Core. Dependency flows in one direction only.


Key Design Decisions

  • Models are passive — structs that hold data only, no logic
  • Validation returns all errors at once — better UX for forms, no interruptions from Swift's throws mechanism
  • Balances are computed values — derived from movements, never stored directly
  • ID-based references — models reference each other by UUID, avoiding duplication and inconsistencies

Tests

The Core is fully unit tested with Swift Testing, covering all business logic independently from the UI.

CoupleBudgetCoreTests
├── Income validations
├── Expense validations
├── Transfer validations
├── Amount validations
└── Balance calculations

Roadmap

  • Core domain models (Account, Bucket, Person, MoneyMovement)
  • Business logic validations (MoneyMovementRules)
  • Balance calculations (BalanceCalculator)
  • Unit tests for all Core logic
  • Dashboard UI with real balances
  • Create and manage accounts
  • Record income, expenses and transfers
  • Data persistence with SwiftData
  • App Store release

Getting Started

Requirements

  • Xcode 26 or newer
  • iOS 18+ device or simulator

Steps

  1. Clone the repository:
git clone https://github.com/franciscoxcode/CoupleBudget.git
  1. Open the project in Xcode:
open CoupleBudget/CoupleBudget.xcodeproj
  1. Build and run on a simulator or real device.

Contact


License

Copyright (c) 2026 Francisco Javier Casillas Pérez. All rights reserved. This project is proprietary and confidential. See LICENSE for details.

About

iOS finance app for couples that puts budgeting at the center of shared money management.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages