Calculate the price
Apps 2026

Wallana

One view of your money across accounts and currencies — and a watchdog for documents that are about to expire.

Client
Own product
Year
2026
Platform
Android + Windows
Technologies
React 19 · TypeScript · Supabase · Vite · Tailwind v4 · Recharts · Framer Motion · Capacitor · Tauri
Three screens of the Wallana app on a phone — categorisation rules, the account overview and adding a transaction.

The brief

Money is never in one place. A current account at one bank, savings at another, cash in the wallet, something in euros on Wise. Every bank has its own app, its own categories and its own idea of what counts as "shopping".

Anyone who wants to know how much goes on eating out each month ends up exporting to a spreadsheet and colouring rows by hand. It lasts about two months.

And next to that runs a second, even more annoying chore: papers with an expiry date. Car insurance, the MOT, a passport, a laptop warranty. People usually remember them only when it is too late.

The solution

One place where every transaction is together — and, above all, sorted without effort.

Import instead of retyping. A bank statement is uploaded as CSV, XLSX or JSON. The app parses it and links it to the right account. Manual entry stays for cash: an expense, income or a transfer between accounts, a few taps and done.

Rules do the boring part. Each rule sets where to look (description, counterparty, counter-account, variable or constant symbol), what to look for and with what priority — and anyone who wants can reach for a regular expression. Seven rules cover most recurring payments, leaving manual work only for the exceptions.

Currencies are never mixed. Crowns and euros live side by side, every transaction keeps its own currency, and nothing in the overview is quietly converted at a rate nobody knows the source of.

Documents have their own folder. Each one stores its type, validity from–to and a scan or PDF. A reminder can be set a week, a month or three months ahead, so nobody finds out about an expired MOT on the road.

Search works by description, counterparty and payment reference — exactly what is on the statement when you are tracking down a specific payment. The interface speaks Czech, English and Ukrainian.

How it’s built

One codebase, two targets. The frontend is React 19 with TypeScript and Vite, styles are Tailwind v4 with design tokens in one place, motion comes from Framer Motion and Recharts draws the balance and spending charts. Capacitor turns it into an Android app and Tauri into a Windows one — both build automatically in GitHub Actions, so a release means a push, not an hour of clicking.

The backend is Supabase: sign-in, Postgres and row-level security. For a personal finance app that is not a detail — access rules live in the database, not in the client, so not even a tampered request can reach someone else's transactions.

Document scans sit in Supabase Storage under the same rules as the data. A photo of an ID card or a green card is protected just like the account balance, which is the least you can expect for documents people upload to an app.

What I did

Design, frontend, the Supabase backend, data import and categorisation.

Outcome

A monthly overview comes from uploading a statement instead of an hour in a spreadsheet. And because the rules do the sorting, it stays up to date even six months later — which, for personal finance, is the difference between a tool and an abandoned project.

2
platforms from one codebase — Android and Windows
16 + 7
categories and automatic rules
3
import formats — CSV, XLSX, JSON
3
interface languages: CZ, EN, UA

Related service

View the service and pricing

Dealing with something similar?

Write a few sentences about where it gets stuck today. I will reply within 24 hours with a proposal for how to approach it.