Projects

Masareef — Personal Spending Tracker

2026·8 min read

React Native
Expo
TypeScript
SQLite
Cloudflare Workers
Neon
Google Play

Masareef (مصاريف, "expenses") is a fast, private, offline-first personal spending tracker — global and multi-currency — with wallets, budgets, insights, subscriptions, trips and a bank-notification auto-capture engine that logs spending by itself, even while the app is closed. Built with Expo SDK 57, React Native 0.86, a local SQLite source of truth, and last-write-wins sync against a Cloudflare

Masareef — Personal Spending Tracker preview

Masareef (مصاريف, "expenses") is a fast, private, offline-first personal spending tracker — global and multi-currency — with wallets, budgets, insights, subscriptions, trips and a bank-notification auto-capture engine that logs spending by itself, even while the app is closed. Built with Expo SDK 57, React Native 0.86, a local SQLite source of truth, and last-write-wins sync against a Cloudflare Workers API. English and full Arabic with a right-to-left layout.

Masareef — a mindful, global spending tracker

Masareef (مصاريف) is Egyptian Arabic for expenses. The goal: see where your money goes without the friction of most finance apps — log spending in seconds, let bank notifications fill in the rest, and never fight the tool.

Download

Masareef is live on Google Play — Android-first, global and multi-currency, in light and dark, and fully localized in Arabic with a right-to-left layout.

Privacy Policy · Delete your account

Screens

A tour of Masareef. Sixteen screens, covering every area of the app.

Home Activity
Spending pace, and what's safe to spend today Every transaction, grouped by day and searchable
Auto-track How it works
Bank alerts captured into a review queue, confirmed in one tap The capture engine, explained inside the app
Where it went Trends
A donut ranking every category — tap a slice for its transactions Six months of income against expense
Budgets Cash flow
Per-category limits with on-track, near-limit and over states Runway to payday, not just to month end
Nearby ATMs Wallets
Cash machines around you on a map, filtered by bank Cash, bank and mobile wallets, one net worth
Quick add Add
Type "spent 250 coffee" in plain words, English or Arabic A full add screen — numpad, categories, wallets, any date
Subscriptions Recurring
Subscriptions found in your own history, priced per year Rent, salary and bills posting on schedule
Worth a look Habits
Double charges, matched refunds and unusual amounts Price creep on your regular buys, and no-spend streaks

Why Masareef

Most finance apps make you fight for every entry, then ask you to trust the cloud with your raw transactions. Masareef flips both: logging is a couple of taps, your bank's own notifications do the data entry, and everything lives on your device first.

  • Offline-first, instant — a local SQLite database is the single source of truth, so every read and write is immediate and works with no signal. Cloud sync is a best-effort background reconciler, never a blocker.
  • Auto-capture, not auto-trust — Masareef parses a bank notification or SMS into amount, merchant, bank, card tail and reference, and lands it in a review queue. High-confidence captures can post on their own with one-tap undo; nothing else touches a balance until you confirm.
  • Privacy by design — an optional app lock, hidden contents in the app switcher, a one-tap Hide balances mask, and analytics that never carry amounts, merchants, or balances — structural events only.
  • Polished in light & dark, English & Arabic — a "Slate Teal" identity in both themes, and a full right-to-left layout where every screen mirrors.

Features

Automatic spending capture

  • A notification-listener bridge (Play-safe) plus an optional SMS parser reads payment alerts from banks and wallets across many countries
  • Card payments, transfers, top-ups, ATM withdrawals and incoming money, each routed to the right wallet by name
  • Keeps capturing while the app is closed — a headless task can parse, accept and notify with nothing on screen
  • Recovers alerts Android redacts or hides, in every language, and says why a message went to review instead of posting
  • A bank-only allowlist gate plus word-bounded Arabic-aware matching, so an OTP, a promo, or a customer named مبروك never becomes (or deletes) a transaction
  • Reference-based dedupe: one bank SMS relayed by three apps is one transaction, not three
  • Learns merchant → category rules as you confirm, and auto-categorizes on the next match

Add in seconds

  • A purpose-built numpad with categories, wallets, notes and any date, for expense, income or transfer
  • Or just type it: "spent 250 coffee", in English or Arabic, posts instantly
  • Reply straight from the notification to log without opening the app; paste or share a bank message in; attach a receipt photo
  • Money is stored as integer minor units end to end — never floats — and rendered through one formatting path

Wallets & multi-currency

  • Cash, bank accounts, cards and mobile wallets side by side, each with its own balance, colour and history
  • Pick any country and currency and the app adapts symbols, formatting and the banks it recognizes
  • Net worth across every wallet, with a trend for recent months
  • Count your cash reconciles the notes in your pocket; balance check compares your bank's own figure and shows the drift

Budgets & planning

  • Per-category monthly limits with on-track, near-limit and over states, and optional alerts before one tips over
  • A monthly spending target that answers what is safe to spend today
  • Cash flow that answers whether the balance lasts to payday, not just to month end
  • A coming up list of everything scheduled in the next 30 days

Subscriptions, bills & debts

  • Subscriptions detected from your own history, with brand logos and yearly cost; overdue and price-raised ones flagged
  • Recurring rent, salary and bills that post on schedule, with catch-up, pause and skip
  • Planned one-off income or expense held pending until you confirm it
  • Debts you owe or are owed, and savings goals

Insights

  • Where it went: a donut ranking every category, tappable straight through to its transactions
  • Income vs. expense over six months, this month vs. last, and your biggest movers
  • Spending calendar heatmap, day-of-week and time-of-day patterns
  • Savings rate, financial health, and the share of spending that logged itself
  • Price creep on your regular buys, no-spend streaks, top merchants, and a shareable money-story recap

Catch mistakes

  • Double charges — the same amount hitting the same merchant twice
  • Refunds matched back to the purchase they reversed
  • Charges above what a merchant normally costs you

Trips & ATMs

  • Track a trip in its own currency and exchange rate, without polluting your normal months
  • Find cash machines around you on a map or list, sorted by distance, filtered by bank or exchange (keyless Overpass)

Backup & sync

  • Sign in and your wallets, transactions, budgets, categories and trips follow you to a new phone
  • Fully offline-first: edits happen locally and instantly, then reconcile in the background (last-write-wins by timestamp)
  • Two clocks kept separate — a client clock decides who wins, a server cursor decides what's new — so sync is immune to device clock skew; deletes propagate as tombstones and the network layer never throws
  • CSV export and a full JSON backup/restore (file pick, paste, or share intent)

How it's built

Offline-first by design: the local SQLite database is the single source of truth for the UI, so every read and write is instant and works with no signal. Derived answers — totals, pace, runway, habits — come from a dedicated ledger layer that returns answers rather than rows, so no screen recomputes the same aggregate twice.

Cloud sync runs as a best-effort background reconciler against a Cloudflare Workers API (Hono + Drizzle over Neon Postgres, with D1 for the small hot tables): local changes are flagged and pushed, remote changes pulled page by page, and conflicts resolve last-write-wins by timestamp. Session lives in SecureStore via better-auth + @better-auth/expo, and key derivation runs on the device.

Auto-track is the part that can silently lose money, so it is the most defended piece of the app: a durable native spool that survives the process being killed, a bank-only allowlist, word-bounded matching for the Arabic drop markers, reference-based dedupe, and a trace log that records why any message was dropped or held.

Tech stack

Layer Choice
Framework Expo SDK 57 + Expo Router (typed routes, declarative auth guards)
Runtime React Native 0.86 / React 19, React Compiler enabled
Language TypeScript, strict mode
UI NativeWind 4 (Tailwind) + a dual light/dark palette (usePalette())
Client state Zustand, persisted to MMKV
Local data expo-sqlite — source of truth, offline-first
Cloud sync custom last-write-wins engine over a typed pull/push contract
Backend Cloudflare Workers + Hono + Drizzle · Neon (Postgres) + D1
Server state TanStack Query
Auth better-auth + @better-auth/expo (session in SecureStore, Google Sign-In)
Auto-track notification-listener bridge (Play-safe) + SMS parser + native spool
Maps MapLibre + keyless Overpass for the ATM finder
Animation react-native-reanimated · SVG via react-native-svg
Icons lucide-react-native
i18n i18next / react-i18next — English + Arabic with RTL
Analytics PostHog (privacy-safe — no amounts, merchants, or balances)

Non-negotiables

  • Offline-first. The local SQLite DB is the source of truth; the app is fully usable with no connection and sync is never a blocker.
  • Money is integer minor units. Never floats, end to end — one formatting path renders every amount.
  • Auto-capture never silently loses a transaction. A dropped capture is the one outcome a user can't recover, so every drop rule is word-bounded, traced, and covered by a "never miss a real transaction" test.
  • Analytics carry no financial data. Structural events only — never amounts, merchants, or balances.

More projects

  • Nafis — Multi-Asset Price & Portfolio2026 · React Native
  • Rafiq — Islamic Companion App2026 · React Native
  • Freeby — Invoicing & Time Tracking2026 · Next.js
All projects