// Native Mobile App

shrwd.

A native personal finance application built to track spending, manage custom budgets, and securely store financial data offline.

The Shrwd overview showing the planner ring and latest activity
The Shrwd overview with the Safe to Spend figure at the top
Shrwd lifetime spending insights

// Screenshots show demo data, not my real accounts

The Objective

I needed a highly responsive, custom way to track my daily spending against rigid monthly budgets. Existing apps were either too bloated with ads or required connecting live bank feeds, which raised privacy concerns. I built Shrwd to act as a secure, offline-first financial ledger.

The Architecture

The application relies heavily on a local SQLite database for instant read/write speeds without needing an internet connection. Global state is managed cleanly via Zustand, ensuring the UI perfectly syncs with the database layer during complex recurring payment calculations.

No Accounts, No Server

You import a bank CSV and everything stays on the phone. There is no sign-up and no server, so the local database has to be right; there is no remote copy to fall back on.

Technical Stack

Frontend FrameworkReact Native / Expo SDK 54
State ManagementZustand
Local DatabaseSQLite (expo-sqlite)
RoutingExpo Router (File-based)
Chartsreact-native-svg (hand-rolled)
DistributionEAS Build

// The Core Calculation

Safe to Spend

Rent, subscriptions and the car payment are still in your account today, but they go out before the month ends. Shrwd subtracts everything still due and puts what is left at the top of the screen.

safeToSpend = netWorth − unpaidCommitments

The hard part is the inputs: spotting which payments repeat from an imported statement, knowing which have already gone out this month, and staying accurate whether you open the app on the 1st or the 31st.

The planner showing projected income, committed outgoings and what is left to spend in August

// Interface States

The card in three moods

Some months go better than others, so the card has three states. Amber shows up while there is still a couple of hundred pounds left, early enough to actually adjust.

The Safe to Spend card showing a deficit of £549.95 in red
Deficit

Committed payments come to more than the cash on hand. The figure goes negative and the card turns red.

The Safe to Spend card showing £110.05 in amber
Tight

Everything is covered, but only just. Amber arrives well above zero so there is still room to react.

The Safe to Spend card showing £4,470.05 with a green badge
Healthy

The month is covered and the card stays neutral.

// In Practice

Icons, categories and corrections

The icon and colour picker for a recurring item

Make it look like your money

Recurring items carry an icon and a colour. Known names are matched automatically, so Netflix and the gym arrive with the right look, and anything else can be set by hand from a picker of thirty icons and ten colours. Custom categories work the same way, with their own icon and colour.

A single transaction opened for editing and recategorising

Fixing a miscategorised transaction

Imported statements guess at categories and sometimes get them wrong. Tapping a transaction opens it for editing, and a recategorisation can apply to every other transaction from the same merchant in one go.

The shopping category for August, broken down by merchant

Following a number back to its source

Each category opens into its own breakdown: the merchants behind the total, the change against last month, and every transaction underneath.

Product Tour

Debt plans, planned expenses and subscriptions in the monthly planner
// Planner
Income sources listed against the month
// Income
Monthly spending with a weekly breakdown chart
// This Month
Spending grouped by category
// By Category
Full transaction history with search and filters
// History
Backup, restore, duplicate cleanup and reset controls
// Your Data

// Known Limits

Where it goes next

PDF statementsIn The Works

CSV import is being opened up so any bank's export can be mapped in. Some banks only provide statements as PDFs, so reading those directly is in the works as well, to cover more banks.

DistributionAndroid Only

The Android build ships as an APK through the beta site. iOS distribution is waiting on a later testing phase.

See the builds

The beta site carries the full release history and the Android APK. Guest access opens the version history; the download itself is held back for testers.

shrwd-beta.vercel.app →

// Guest password: GUEST-2026

shrwd.

// Offline-first. No accounts. No ads.

Back to Portfolio

© 2026 Kobby S. Arthur. All rights reserved.