Skip to content

IslandRhythms/dividex

Repository files navigation

Dividex

A modern budgeting application built with .NET MAUI and Blazor that helps you divide and manage your monthly income across different categories and track your expenses.

Overview

Dividex is a cross-platform budgeting app that allows you to:

  • Divide your monthly salary into customizable budget categories
  • Track fixed and variable costs for each category
  • Manage receipts and compare prices across different purchases
  • Visualize your budget allocation with real-time progress tracking
  • Save and manage multiple budgets

Features

💰 Budget Management

  • Monthly Salary Input: Set your monthly income as the foundation for your budget
  • Customizable Categories: Create and manage budget categories with custom names and percentages
    • Default categories: Needs (50%), Wants (30%), Savings (20%)
    • Add unlimited custom categories
    • Each category can have its own percentage allocation
  • Subcategories: Break down categories into subcategories for more detailed budgeting
    • Subcategory percentages must not exceed their parent category's percentage
    • Visual validation ensures percentages stay within limits
  • Fixed Costs: Track recurring expenses with fixed amounts
    • Add labels to identify each cost
    • Real-time tracking against allocated budget
  • Variable Costs: Track expenses with min/max ranges
    • Useful for fluctuating expenses
    • Visual feedback on budget utilization
  • Progress Tracking:
    • Real-time progress bars for each category
    • Visual indicators when approaching or exceeding budget limits
    • Color-coded warnings for over-budget situations

📊 Budget Operations

  • Multiple Budgets: Create, save, and manage multiple budgets
    • Name your budgets for easy identification
    • View all saved budgets in a list
    • Load, update, or delete existing budgets
    • Copy existing budgets to create variations
  • Data Persistence:
    • SQLite database for reliable data storage
    • Automatic data persistence across app sessions
    • No data loss when navigating between pages
  • Import/Export:
    • Export budgets to CSV format
    • Import budgets from CSV files
    • Share budgets between devices or backup your data

🧾 Receipt Management

  • Receipt Tracking:
    • Add receipts with custom names
    • Add multiple items to each receipt (label and amount)
    • Running total calculation as you add items
    • Save receipts to the database
  • Receipt Comparison:
    • Select multiple receipts to compare
    • Side-by-side comparison view
    • Automatic highlighting of matching items
    • "Best Price" indicators for items found in multiple receipts
    • Visual feedback with color-coded rows (green for best price, yellow for matches)

📱 User Interface

  • Modern Design: Clean, intuitive interface built with Bootstrap
  • Dashboard: Overview page showing:
    • Latest budget summary
    • Receipt statistics
    • Recent activity
    • Quick navigation to main features
  • Responsive Layout: Works seamlessly across different screen sizes
  • Loading States: Visual feedback during async operations
  • Error Handling: User-friendly error messages with detailed logging

Technology Stack

  • .NET 10.0: Modern C# development
  • .NET MAUI: Cross-platform framework for native apps
  • Blazor: Web UI framework for interactive components
  • Entity Framework Core: ORM for database operations
  • SQLite: Embedded database for data persistence
  • Bootstrap: CSS framework for styling

Supported Platforms

  • macOS (Mac Catalyst)
  • Windows
  • iOS (requires macOS for development)
  • Android (requires Android SDK)

Getting Started

For End Users

Simply download the latest release from the Releases page, extract the zip file, and double-click the application. No installation or setup required!

For Developers

Prerequisites

  • .NET 10.0 SDK
  • .NET MAUI workload installed (dotnet workload install maui)
  • For macOS: Xcode 15.0 or later
  • For Windows: Visual Studio 2022 with .NET MAUI workload

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd dividex
  2. Restore NuGet packages:

    dotnet restore
  3. Build the project:

    dotnet build

Running the Application

For End Users (Downloaded Release)

If you downloaded a release from GitHub:

  1. Extract the zip file
  2. macOS: Double-click dividex.app
  3. Windows: Double-click dividex.exe

Note (macOS): On first launch, you may need to:

  • Right-click the app → Open (to bypass security warning)
  • Or go to System Settings → Privacy & Security → Click "Open Anyway"

The database will be automatically created on first run.

For Developers (Building from Source)

On macOS:

./run.sh
# Or directly:
dotnet run -f net10.0-maccatalyst

On Windows:

dotnet run -f net10.0-windows10.0.19041.0

The database will be automatically created on first run in the application's local data folder.

Database

The application uses SQLite for data persistence. The database file is automatically created at:

  • macOS: ~/Library/Application Support/com.companyname.dividex/dividex.db
  • Windows: %LOCALAPPDATA%\dividex\dividex.db
  • iOS/Android: App's sandboxed data directory

All data is stored locally on your device. No cloud sync or external services are required.

Project Structure

dividex/
├── Components/
│   ├── Layout/          # Main layout and navigation
│   └── Pages/
│       ├── Budget/      # Budget management page
│       ├── Receipts/    # Receipt tracking page
│       └── Home.razor   # Dashboard
├── Data/
│   ├── BudgetDbContext.cs  # Database context
│   └── Entities.cs         # Data models
├── Services/
│   ├── BudgetService.cs    # Budget operations
│   └── ReceiptService.cs   # Receipt operations
├── Resources/
│   └── AppIcon/            # Application icons
└── Platforms/              # Platform-specific code

Creating Releases

See RELEASE.md for detailed instructions on creating distributable releases for GitHub.

Quick release creation:

# macOS
./create-release.sh 1.0.0

# Windows
.\create-release.ps1 1.0.0

Contributing

This is a personal project, but suggestions and feedback are welcome!

License

[Add your license here]

Acknowledgments

Built with .NET MAUI and Blazor for cross-platform development.