Skip to content

Consolidate all your accounts—bank, crypto, cash—into one unified financial dashboard. Built with Clean Architecture & TDD.

Notifications You must be signed in to change notification settings

Fenriz1349/CatLedger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Platform Swift Xcode SwiftUI Architecture License

CatLedger

A powerful, local-first financial management app for iOS that consolidates all your accounts—bank accounts, crypto wallets, cash—into a single unified dashboard with intelligent analytics.

Why CatLedger?

Managing money across multiple institutions is a fragmented experience. CatLedger solves this by giving you a complete wealth overview at a glance, all stored locally on your device with zero cloud dependencies.

Features

V1 (Current Development)

  • Multi-Institution Support: Centralize accounts from different banks, crypto platforms, and cash wallets
  • Account Hierarchy: Organize multiple accounts per institution (e.g., checking, savings, investment accounts)
  • Flexible Transactions:
    • Record external transactions (purchases, income, transfers from external sources)
    • Log internal transfers between your own accounts
  • Granular Analytics Dashboard:
    • Overall wealth distribution across all accounts
    • Breakdown by institution
    • Analysis by account type (checking, crypto, cash, etc.)
    • Expense categorization and insights
  • Offline-First Architecture: All data persists locally using SwiftData—no internet required

V2 & Beyond

  • Historical trend analysis and spending patterns
  • Budget forecasting
  • Recurring transaction templates
  • Multi-user support with optional cloud sync
  • Advanced reports and export functionality

Architecture

CatLedger is built with Clean Architecture principles using a feature-driven folder structure. This ensures scalability, testability, and maintainability.

Layers

Each feature (Institution, Account, Transaction, etc.) follows this structure:

Features/
├── FeatureName/
│   ├── Data/              # Repository implementation, models
│   ├── Core/
│   │   ├── Protocols/     # Repository & domain protocols
│   │   ├── Errors/        # Feature-specific errors
│   │   └── UseCases/      # Business logic
│   └── Presentation/      # SwiftUI views & ViewModels

Key Principles

  • Separation of Concerns: UI, business logic, and data access are cleanly separated
  • Testability: Dependencies are injected; business logic is decoupled from frameworks
  • Scalability: New features can be added with minimal impact on existing code
  • Offline-First: SwiftData handles persistent storage without external dependencies

Tech Stack

  • UI Framework: SwiftUI
  • Local Storage: SwiftData
  • Language: Swift 5.9+
  • Minimum iOS: iOS 17+
  • Architecture: Clean Architecture + MVVM pattern

Getting Started

Prerequisites

  • Xcode 15+
  • iOS 17+
  • Swift 5.9+

Installation

  1. Clone the repository:

    git clone https://github.com/Fenriz1349/CatLedger.git
    cd CatLedger
  2. Open the project:

    open CatLedger.xcodeproj
  3. Select a simulator or connected device and press Cmd + R to build and run

Project Structure

CatLedger/
├── App/                          # Entry point & navigation
├── AppTheme/                      # Design system & styling
├── Features/
│   ├── Institution/              # Bank, crypto platform management
│   │   ├── Data/
│   │   ├── Core/
│   │   └── Presentation/
│   ├── Account/                  # Account management per institution
│   │   ├── Data/
│   │   ├── Core/
│   │   └── Presentation/
│   ├── Transaction/              # Transaction recording & history
│   │   ├── Data/
│   │   ├── Core/
│   │   └── Presentation/
│   └── Dashboard/                # Analytics & wealth overview
│       ├── Core/
│       └── Presentation/
└── CatLedgerApp.swift            # Main app entry point

Usage

Adding an Institution

Navigate to the Institutions screen and tap "+" to add a new bank, crypto platform, or wallet. Configure the institution name and type.

Creating an Account

Within an institution, create multiple accounts (e.g., Checking, Savings, Investment). Each account is tracked independently.

Recording a Transaction

From the Transactions screen, record either:

  • External Transaction: Money from outside sources or external transfers
  • Internal Transfer: Move funds between your own accounts

Viewing Analytics

The Dashboard aggregates all your data:

  • See total wealth across all institutions
  • Filter by institution or account type
  • Analyze spending by category

Development Approach

Test-Driven Development (TDD)

CatLedger is built with TDD principles. Business logic in the Core/UseCases layer is developed alongside unit tests, ensuring reliability and maintainability from the start. This approach makes refactoring safe and catches regressions early.

Data Persistence

All data is stored locally using SwiftData. Models are defined in each feature's Data/ layer and automatically persisted to the device.

No External Dependencies

CatLedger intentionally avoids third-party frameworks for core functionality. This keeps the app lean, fast, and fully offline-capable.

Contributing

This is a learning project built during iOS development training. Contributions, suggestions, and feedback are welcome!

License

MIT License - feel free to use this project as reference for your own work.

Contact

For questions or feedback, reach out via GitHub: @Fenriz1349


Status: Pre-MVP, actively in development
Last Updated: November 2025

About

Consolidate all your accounts—bank, crypto, cash—into one unified financial dashboard. Built with Clean Architecture & TDD.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages