Venekambio
One figure, six currencies, zero servers. No login, no accounts, no backend: rates are fetched from the phone itself and everything saved stays on it. $0/month to operate.
One amount, six currencies, zero servers.
At a Venezuelan register the official BCV rate, USDT, the euro, the Monitor rate and bolívares all coexist. Venekambio shows them all at once from a single keystroke, and does it without a backend: the rates are read from the phone itself.
From opening the app to six results without touching a server
Tap the steps or let it play. Each step lights up the piece it describes.
The complete conversion. It is the same function in the app, on the web and in the Windows launcher.
What is there and what is not
Three clients, four public sources and state on the device. The slot for a server of our own is empty on purpose.
Delivery is static too: GitHub builds the web on Vercel, and the APK and the Windows installer are two more files under /downloads on the same domain.
A kilo of cheese, four rates and a customer waiting
A made-up case with the real rates from 28 Sep 2026, to see what each person looks at before talking about decisions.
Bs 4,046.70, $ 4.72 BCV, € 4.14 and $ 4.20 MON. She decides to charge Bs 4,500 per kilo.$ 5.25 BCV. Carmen, on the other hand, knows it is 4.67 USDT, and that she keeps 0.47 USDT per kilo. Both figures come from the same screen.Five times the obvious answer was wrong
Each challenge follows the same pattern: what anyone would do first, why it does not work, what was done and the number that proves it. The technical detail stays folded.
Every product decision goes through the same question: does it help a merchant who needs to see four rates in two seconds? If the answer is not direct, the decision is badly framed.
A single filter: does this require a monthly service?
If the answer was yes and there was a reasonable alternative, the alternative was chosen. What follows is each decision with its cost.
Go deeper
What is lost: a cache shared between users, a rate history of our own and the ability to switch sources without shipping a new version. The first does not matter at this scale; the second and third are the price of $0/month and are accepted knowingly.
Go deeper
The cost is weight: a 51 MB APK, more than its native equivalent. It comes from the embedded Flutter engine, it is fixed and does not grow with features. For an APK downloaded from the web it is something to watch, not a blocker.
The same decision served the third surface: the Windows launcher is Flutter with window_manager, hotkey_manager and tray_manager. It is invoked with Ctrl + Alt + Space, evaluates full expressions (1.250 × 3 + 980) with precedence and parentheses, and lives in the tray.
Go deeper
Flutter Web for the landing was ruled out for the same reason: it paints on a canvas and crawlers see an empty page. Marketing content only changes on rebuild; for a page that changes monthly, not daily, that is an acceptable cost with automatic deploys from main.
Details that do matter on a website with a new domain: canonical on www, OG image as PNG (scrapers do not read SVG reliably), static robots and sitemap, favicon generated from the app icon so both surfaces share one identity.
Go deeper
What is aligned by hand and declared in the code: the currency catalog, the Rate model and the definition of the nine chips, with a comment on each side pointing to the other file. The day there is a third Dart consumer, the package stops being overkill; it is in the retrospective.
/downloads on the same hosting: no extra server, no separate pipeline. Trust comes from the domain the user is already visiting, not from a third-party repository.Go deeper
The Windows installer follows the same path: Inno Setup, no administrator privileges, installs into the user profile and is unsigned, so SmartScreen warns the first time. Signing it costs an annual certificate, and today it is not justified.