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



// 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
// 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 − unpaidCommitmentsThe 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.

// 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.

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

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

The month is covered and the card stays neutral.
// In Practice
Icons, categories and corrections
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.

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.

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






// Known Limits
Where it goes next
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.
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
// Offline-first. No accounts. No ads.
© 2026 Kobby S. Arthur. All rights reserved.