# Articles

> How the systems work. Articles about the iOS systems I build: Finely, and the platform and client work I did at GoodBarber.

- Canonical: https://lanfranchistephane.dev/articles/

## Finely

- [The Ledger Behind Finely](https://lanfranchistephane.dev/articles/transaction-ledger/) — Finely, 8 min read. How Finely stores only transactions and recurring rules, writes each charge exactly once, and gives every screen the same list of past and upcoming money.
- [An On-Device Assistant That Never Makes Up a Number](https://lanfranchistephane.dev/articles/on-device-ai-assistant/) — Finely, 7 min read. How Finely answers questions about your money on the iPhone: Apple's on-device model only works out what is being asked, and Finely calculates every amount from your own transactions. Without Apple Intelligence, simple rules take the model's place.
- [Adding Transactions to Finely from Siri and Shortcuts](https://lanfranchistephane.dev/articles/app-intents/) — Finely, 5 min read. How Finely turns a spoken sentence or an Apple Pay payment into a transaction: it never guesses the amount, reads a spoken transaction back before saving it, and only says it was added when the save really worked.

## GoodBarber · Platform

- [One Subscription Flow for Thousands of Apps](https://lanfranchistephane.dev/articles/in-app-purchase-infrastructure/) — GoodBarber · Platform, 6 min read. How GoodBarber apps sell subscriptions: one shared service shows only what Apple can sell, lets the server confirm every purchase, and unlocks the same access on every screen.
- [One Layout Engine for the App's Content Lists](https://lanfranchistephane.dev/articles/layout-engine/) — GoodBarber · Platform, 8 min read. How GoodBarber's list templates got one shared layout: the same code sizes and places a list on the home page and on a full screen, measures each item with the view that draws it, and slots native ads between items.
- [A Real Web Address for Plugin Pages](https://lanfranchistephane.dev/articles/plugin-webviews/) — GoodBarber · Platform, 6 min read. How GoodBarber apps serve an app owner's own web pages from a web server inside the app, forward their calls to other websites, and restart the server after the background.
- [Decoding Images at the Size They Are Shown](https://lanfranchistephane.dev/articles/image-memory/) — GoodBarber · Platform, 6 min read. Why small thumbnails filled memory in GoodBarber apps, and how the shared image loader now decodes each image at the size it appears on screen, while every existing screen keeps loading images as before.
- [Asking for Age Before Asking to Track](https://lanfranchistephane.dev/articles/privacy-feature-gates/) — GoodBarber · Platform, 7 min read. How GoodBarber apps ask for a person's age range before any tracking prompt, keep people under 16 away from ad networks, third-party analytics, and location, and check that answer again each time one of them runs.

## GoodBarber · Client project

- [Billing Mutuelle de la Corse from an iPhone](https://lanfranchistephane.dev/articles/mutuelle-de-la-corse/) — GoodBarber · Client project, 7 min read. How health professionals bill Mutuelle de la Corse from their iPhone: the camera fills in a patient's number only after reading the same valid number five times, and only the insurer's answer confirms an invoice.
