Case study · our own product

Mony: a paid family finance app in four languages, built and run by the Candora team.

Mony is a money-tracking app for individuals and households. It is not a client project: Mony is our own product, so we can open up its decisions and numbers here.

Fill in a short briefOpen Mony (opens another site)

Context

We wanted a money-tracking app you can use every day in a few taps, for one person or a whole household, with no ads, no selling of data and no request for bank passwords.

Mony comes with a 14-day trial with no card needed, then a subscription of Rp25,000 a month or Rp199,000 a year. After the trial, an account without a subscription can still be opened and its data is not deleted; only new entries stop.

The Mony home screen on a phone: total balance, this month’s income and spending, and what is left in each budget.
App screenshot. The figures are sample data.
The Mony budgets screen: each budget with the money left in it this month.
App screenshot, shown in Indonesian. The figures are sample data.

Challenges

Four languages, one of them right-to-left
Indonesian, English, Chinese and Arabic in one app, without a separate version for each language.
Money data must not break when the app is updated
Each new version can change the structure of a database that already holds users’ records.
Light on ordinary phones
Users open Mony on phones and laptops, often on networks that are not always fast.
Ready for mobile apps
Android and iOS apps may follow, and the server must not need rewriting when that happens.

Technical decisions

PWA first
One web app that can be installed on a phone’s home screen, with a manifest per language. Users do not have to wait for an app store.
A Go server and an SQLite database
One program and one database file: easy to run, back up and move.
Migrations with a backup first
Before the database structure changes, a backup copy is made. Each step runs in a transaction and is rolled back if it fails, and an older version of the program refuses to open a newer database.
Language as part of the design
Text comes from a translation file per language, and the layout direction switches to right-to-left for Arabic.
An API ready for mobile apps
Besides web sessions, the server already has tokens for mobile apps and an OpenAPI document that tests keep in line with the code.
No third-party scripts on public pages
Mony’s public pages load no outside scripts and set no cookies.

Measured results

4 languages
Indonesian, English, Chinese and Arabic, with right-to-left layout.
480 automated tests
145 server tests (Go) and 335 interface test cases, counted on 15 October 2026, including data migration tests.
± 260 KB
Size of the mony.candora.id home page on a first visit: HTML, styles, scripts, fonts and images, compressed.
0 third-party scripts
On Mony’s public pages, and its pages set no cookies.
14 days
The no-card trial before a subscription of Rp25,000 a month or Rp199,000 a year.

The numbers above are counted from Mony’s code and from the site build, not estimated. We do not show user numbers.

What we learned

Plan for right-to-left from day one
Using logical directions (start and end, not left and right) from the start is far cheaper than flipping the layout later.
Names in the code affect cost
Mony’s early schema used Indonesian names. Switching them to English took a full migration and its tests. Now we settle naming conventions before the first line.
Claims must be checkable
Every number on this page is counted from the code or the build. What cannot be proven, we do not write.
If something does not exist yet, we say so
Mony does not have an app on the Play Store or App Store yet. We state that plainly, here and on the Mony site.

Have a family product you want built the same way?

Five short questions, then the message goes out from your own WhatsApp or email.

Fill in a short brief

Discuss a project