Skip to content

digaomatias/mymascada

Idioma / Language: English | Portugues (BR)

MyMascada

License: AGPL v3 CodeQL

A personal finance management application with AI-powered transaction categorization, bank account syncing, and multi-language support. Built for self-hosting with Docker, MyMascada gives you full control over your financial data.

Try the demo -- No install needed. Explore MyMascada with sample data at demo.mymascada.com (login: [email protected] / DemoPass123!).

Screenshots

Dashboard Transactions Settings
Dashboard Transactions Settings

Features

  • Transaction Management -- Import transactions via CSV, OFX, or manual entry
  • AI-Powered Categorization (optional -- requires OpenAI API key) -- Automatic transaction categorization using GPT-4o-mini
  • Rule-Based Categorization -- Define custom rules to automatically categorize transactions
  • Bank Account Syncing (optional -- New Zealand only) -- Live account syncing via Akahu
  • Google OAuth Sign-In (optional) -- Email and password authentication is always available
  • Email Notifications (optional) -- Password reset, email verification, and account alerts
  • Multi-Language Support -- English and Brazilian Portuguese
  • PWA Support -- Installable on mobile devices for a native-like experience
  • Budget Tracking -- Set budgets and analyze spending patterns
  • Account Reconciliation -- Compare and reconcile account balances
  • Data Export -- Export your data in CSV or JSON format
  • Docker Self-Hosting -- Guided setup with a single script

Your Data, Your Server

MyMascada is designed with privacy as a core principle:

  • No telemetry -- The app sends zero analytics, tracking, or usage data anywhere
  • No cloud dependency -- Everything runs on your hardware. No external services are required (AI and bank sync are opt-in)
  • Fully offline-capable -- Once running, the app works without an internet connection
  • Your database, your rules -- All financial data stays in your PostgreSQL instance. Export it anytime in CSV or JSON

Quick Start (Self-Hosting)

git clone https://github.com/digaomatias/mymascada.git
cd mymascada
./setup.sh

The setup script walks you through configuration, including database credentials, optional API keys, and email settings. For detailed instructions, environment variable reference, and production deployment guidance, see SELF-HOSTING.md.

Architecture

MyMascada follows Clean Architecture principles with clearly separated layers:

Domain  -->  Application  -->  Infrastructure  -->  WebAPI
  • Domain -- Entities, value objects, and domain events with no external dependencies
  • Application -- Business logic, use cases, CQRS with MediatR, and DTOs
  • Infrastructure -- Data access (EF Core), external integrations (OpenAI, email, Akahu)
  • WebAPI -- REST API endpoints, authentication, middleware, and dependency injection

The frontend is a standalone Next.js application that communicates with the backend via REST APIs.

Tech Stack

Component Technology
Backend ASP.NET Core 10, C#
Frontend Next.js 15, React 19, TypeScript
Styling Tailwind CSS
Database PostgreSQL 16
ORM Entity Framework Core 10
Caching Redis 7
Authentication JWT, Google OAuth
AI OpenAI API (gpt-4o-mini)
Internationalization next-intl (frontend), IStringLocalizer (backend)
Background Jobs Hangfire
Testing xUnit, Playwright

Development Setup

Prerequisites

  • .NET 10 SDK
  • Node.js 20+
  • PostgreSQL 16+
  • Redis 7+ (optional for development)

Backend

cd src/WebAPI/MyMascada.WebAPI
dotnet restore
dotnet run

The API starts at https://localhost:5126 by default.

Frontend

cd frontend
npm install
npm run dev

The frontend starts at http://localhost:3000 by default.

Running Tests

# Backend unit tests
dotnet test

# Frontend E2E tests
cd frontend
npx playwright test

Documentation

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

Contributing

Contributions are welcome! If you find a bug or have a feature request, please open an issue. Pull requests are appreciated -- see CONTRIBUTING.md for guidelines.