Mobile

Nqood — نقود

Personal Budget Tracker · Flutter app + ASP.NET Core engine

2026 12 technologies
Nqood — نقود
Nqood — نقود
Nqood — نقود
Nqood — نقود
Nqood — نقود
Nqood — نقود
Nqood — نقود

1 / 7

Overview

A privacy-first personal finance app built for the Egyptian market, published on Google Play. The Flutter client captures spending in two seconds — by voice, by parsing bank SMS, or by hand — and a self-hosted ASP.NET Core engine enforces financial rules and surfaces patterns in real time through a pre-aggregated statistics layer.

The problem

Egyptian users juggle cash, bank cards, and wallet apps with no single source of truth. Existing trackers are slow to log, ignore local bank SMS formats, and can't enforce rules like saving goals or expense limits at the moment money is spent.

Architecture

Two-layer snapshot architecture: PostgreSQL is the source of truth, Redis holds live daily totals via atomic HINCRBYFLOAT counters (O(1) writes, no race conditions), and MongoDB stores completed-day documents for fast historical reads. Hangfire generates recurring transaction occurrences as background jobs. The statistics engine reads only pre-aggregated data, so dashboards never scan the transaction table.

Tech stack

FlutterDartASP.NET CoreEntity Framework CorePostgreSQLRedisMongoDBHangfireGemini AIJWT AuthFluentValidationDocker Compose

Key features

  • Two-second capture with smart defaults and an adaptive entry UI
  • Voice capture parsed by Gemini 2.5 Flash-Lite in Egyptian Arabic
  • Deterministic bank-SMS parser tuned for Egyptian bank formats
  • Financial rules engine: saving goals, expense limits, minimum balance — enforced with a confirm/cancel flow
  • Scheduled recurring transactions with background notifications
  • Offline-first with automatic background sync
  • Home-screen widgets and quick actions

Engineering highlights

  • Atomic Redis HINCRBYFLOAT updates give O(1) write cost per transaction with zero race conditions
  • TPH inheritance models Income/Expense transactions and rule types via EF Core discriminator columns
  • 40+ REST endpoints across 9 resource controllers with filtering, pagination, and inline entity creation
  • Global soft-delete via EF Core query filters plus an automatic CreatedAt/UpdatedAt/DeletedAt audit trail

Security considerations

  • ASP.NET Identity + JWT Bearer auth with a Redis-backed refresh-token lifecycle
  • Self-hosted by design — user financial data never leaves infrastructure the owner controls

Challenges

  • Making rule evaluation cheap enough to run on every single expense without blocking the UI
  • Parsing inconsistent, free-form bank SMS reliably without false positives

Outcome

  • Shipped to Google Play
  • Real-time rule enforcement backed by a dual-database snapshot design
  • Open-source backend engine published on GitHub