Case Study
Esti Napló: A Journaling App That Keeps Your Diary on Your Phone and Still Uses AI
Esti Napló is our own evening journaling app: a short nightly entry, typed or spoken, a mood, a streak, and AI reflections for subscribers. The interesting part is what it does not do: no account, no analytics, no audio upload, and no diary in the cloud unless you ask. This is how we designed a private-by-default product around a cloud AI model.
TL;DR
- —A nightly entry by text or voice, a mood, a reminder and a streak; AI reflections, follow-up questions and weekly insights are the paid tier.
- —The journal lives in an encrypted SQLite database on the device, which is the source of truth; cloud sync is optional.
- —Identity is an anonymous Firebase Authentication user: no name, email or phone is ever requested.
- —Voice entries use the operating system's on-device speech recognition, so no audio is recorded or uploaded.
- —AI features call Claude through a server-side function that adds the credentials and sends only the relevant entry or extracted tags, never the whole diary.
The product: a few lines before sleep
Esti Napló, Hungarian for evening diary, is built for one habit: write a few lines about your day before you sleep. You type or dictate an entry, pick a mood, and the app keeps your streak and reminds you at the time you choose. Nothing about it asks for more than a few minutes.
It is a HyperCode product rather than client work, which made it a good place to test a position we hold anyway: a personal app should be private by default and collect as little as possible. A diary is the most personal data a phone holds, so every architectural choice below starts from that.
Private by default, in the architecture rather than the policy
The journal is stored in a local, encrypted-at-rest SQLite database on the device, and that database is the source of truth. Cloud synchronisation and backup exist, on Supabase with row-level security, but as an opt-in for people who want their entries on a second device, not as the place the diary lives.
There is no account. Identity is an anonymous Firebase Authentication user created automatically: a random identifier, with no name, email address or phone number requested at any point. There is no advertising, no third-party analytics or tracking SDK, no contacts, no precise location, no advertising identifier. That leaves a privacy policy with little to explain.
Voice without uploading a single second of audio
Dictating an entry is the natural way to journal in bed, and the obvious implementation is a cloud speech-to-text API. We used the platform's on-device recognition instead, Apple Speech on iOS and the Android SpeechRecognizer. The audio never leaves the phone and is never recorded; only the recognised text reaches the entry.
This also makes voice a free feature rather than a metered one, and it removes an entire data category from the policy. The microphone and speech permissions are optional, and declining either simply disables dictation.
AI reflections that never see the whole diary
The paid tier adds what a good journaling companion would do: a personalised reflection on tonight's entry, a single adaptive follow-up question, daily summaries and weekly pattern insights. These run on Anthropic's Claude models, which means some text has to leave the device, and this is the one place where it does.
Two rules keep that bounded. First, the app never calls the model directly; a server-side function adds the credentials, so no API key ships in the client. Second, the payload is the relevant entry text or a small set of extracted tags, not the journal history. AI features run only when the user invokes them.
The trade-off we chose on purpose
No account and device-first storage have a cost: if you lose the phone or uninstall the app without exporting, the diary may be unrecoverable. We wrote that into the terms instead of hiding it, and we built the mitigation in: an in-app export of the whole journal, plus the optional cloud backup for those who want it.
The same honesty applies to the AI. The terms state plainly that reflections are not medical or therapeutic advice and point anyone in crisis to professionals. A product that reads people's evenings should not pretend to be more than it is.
Where the free tier ends
Writing, mood, voice, reminders, streaks, export and sync are free. Everything that costs us per use, which is the AI, sits behind a Premium entitlement bought through the App Store or Google Play. The line is easy to explain to a user and it keeps the free product complete rather than crippled.
The result is a small app with a clear promise: your diary stays yours, on your phone, and the only thing we send anywhere is the sentence you asked the AI to think about.
What we learned building Esti Napló
- ✓Privacy by default is an architecture decision: make the device the source of truth and cloud an opt-in.
- ✓Anonymous identity removes whole categories of personal data and most of the policy with them.
- ✓On-device speech recognition makes voice both free and private; reach for a cloud API only when the platform cannot do it.
- ✓Put cloud AI behind a server function and send the minimum text; the model does not need the history to be useful.
- ✓Write the trade-offs into the terms and ship the mitigation as a feature.
Building something people will trust with personal data?
We design mobile products that are private by default and still use modern AI, from the data model to the privacy policy.
Get a free estimate