Skip to content

Saltserv · Amsterdam

I build native apps. 12 of them are on the stores.

Swift on iOS, Kotlin on Android, Compose Multiplatform where sharing code makes sense. An SSH client, a voice recorder that never touches the cloud, a package tracker that doesn't read your email, a fiqh reader, a baby-names app with cited sources. No accounts, no telemetry, no rented SaaS. For clients, the same care goes into backends and internal tools.

Shipped apps
12
Platforms
3
Store languages (max)
20
Cura multi-server dashboard with health scores and live CPU, RAM and disk usage for each Linux server

A real SSH terminal plus a live server dashboard on your phone. Cura reads CPU, RAM, disk, Docker and logs over plain SSH — nothing to install on the server — and pages you when a threshold breaks.

Ismi swipe deck showing an Islamic baby name card with Arabic script, transliteration and meaning

Swipe through 1,826 Islamic and Arabic baby names — Arabic script, pronunciation, and a meaning traced to a real source. 565 carry a verified Quran citation. Match with your partner. No ads, fully offline.

Mantra home screen mirroring the lock screen: the user's own affirmation set over an illustrated background

Write one line you want to live by; it's on your lock screen in under a minute and arrives on a new illustrated background every morning. Your words, your photos if you like, nothing uploaded.

QuestLog backlog list with games sorted by status, platform badges and time-to-beat estimates

Save any game in two taps, sort your backlog, and when you can't decide, spin the roulette. Time-to-beat on every title, a 'pile of shame' counted in hours, and share cards when you finally beat one.

Underway home screen: every package in one list, grouped into arriving today, needs attention and on the way

One calm list of everything you're waiting on, across 900+ carriers. Paste a number or scan a barcode, get a Live Activity on delivery day — and never hand an app your inbox.

Textrix onboarding showing paraphrase, summarise, grammar and scan tools

Paraphrase and translate in 30+ languages, summarise, fix grammar and tone, and pull text out of photos and PDFs — with an AI that runs on your iPhone instead of a server.

Booksum bookshelf on iPhone showing books with cover art, author and how many snippets are saved from each

Reading Journal - Booksum

iOS · Android

Photograph a page, keep the passage with the book it came from, and get a private on-device summary. A bookshelf, a quote collection and a reading journal in one — nothing leaves the phone.

Marjai reading view showing a verbatim ruling from al-Masail al-Muntakhaba in Amiri typeface with bookmark and share actions

The complete book of Sayyid Sistani's rulings — every masʾala, letter for letter from the official source — with chapter browsing, diacritic-tolerant Arabic search and bookmarks. Offline, free, no ads.

Ward home screen showing Protected, 168,492 sites blocked, and the Adult, Gambling and Ads categories

Pick what to block, turn on the filter, done. The lock is what makes it stick: switching anything off takes a waiting time from one hour to a week, and a friend can hold the unlock code. Nothing leaves your phone.

ADB Remote project setup detecting Gradle configuration, build variants and connected Android devices

ADB Remote

macOS

A native macOS window for the ADB and Gradle commands you run fifty times a day — logcat filtering, installDebug, file pulls, screenshot diffs — without launching Android Studio.

Murmur capture screen with a single large record button and a live transcript appearing as you speak

Tap, talk, and Murmur writes the note — transcribed and tidied entirely on your iPhone. Ask it questions about what you said, set reminders by voice, export Markdown. Nothing ever leaves the phone.

Ouen Fan Sign Maker: a three-step print, cut out, glue onto the fan guide and a preview of the sign WAVE AT ME held on a fan

Type a message, print it one big letter per page, cut and glue it onto a fan. Then save up for the show, keep every photocard, and never miss a ticket deadline. No ads, no account, nothing leaves your iPhone.

Client work

All case studies

The other half of the job: Android apps for other companies' products — a guitar-tuner maker, a car marketplace, an EV-charging rewards programme, an AI parenting startup — and a backend-plus-web planning system for a fibre contractor.

Dynet dashboard: the City → Area → District → Building → Apartment hierarchy with counts, the five-step installation process flow, and completed, pending and scheduled installation totals

Dynet

Fibre rollout · Web · API

Districts arrive as the network operator's Excel sheet; Dynet turns them into buildings, flats and a work queue for six specialist roles — surveyors, planners, installers — with calendars, floor plans down to the cable, and live progress per district. API, web app and import pipeline, built by me.

Case study

Fibre rollout · October 2023 – present

A planning and tracking system for fibre-to-the-home installations in Dutch housing districts

  • REST API with JWT auth in httpOnly cookies, role-based access, rate limiting, OpenAPI docs
  • Excel import pipeline: header matching, validation, preview, conflict check, transactional import with live progress
  • Role-specific web app: dashboards, calendars, apartment workflows, drag-to-prioritise districts
  • Building layout editor with twelve floor-plan schemas and floor-to-cable mapping
  • Seeders, tests, structured logging and health probes for day-two operations
Node.jsExpressMongoDBMongooseJWTReact 18TypeScriptMaterial UI
Read the Dynet case study

Android apps built for clients

Roadie Tuner home screen with the user's instrument profiles and tutorial cards

Roadie Tuner

Music hardware · Android

A free chromatic tuner for twelve instruments and the control centre for Band Industries' Roadie devices: connect over Bluetooth, push firmware, manage instrument profiles and 150+ alternate tunings. I built the Android app; 100K+ installs, rated 4.6 on Google Play.

Case study

Seez store screenshot: Find your next car — buy, lease, new, used — with search results for Toyota models in Dubai

Seez

Automotive marketplace · Android

Seez aggregated used and new car listings across the UAE, Saudi Arabia and Kuwait into one search, priced them with market data, and could identify a car from a photo. I built the Android app — 500K+ downloads — for a company that grew to a million users and was acquired by Pinewood Technologies in 2025.

Case study

PowerGoodies home screen: points balance, a Ready to charge card and an Add new card bonus

PowerGoodies EV Rewards

EV charging · Android

Public chargers are blocked by cars that finished hours ago. PowerGoodies rewards EV drivers with points for charging at partner operators in the Netherlands, Belgium and the UK and for unplugging right after the car is full — points they spend on gift vouchers. I built the Android app end to end: charge map, session tracking, timers, notifications and the rewards shop.

Case study

Bubu AI store screenshot: Meet Bubu, your smart AI companion, with a chat about a daughter waking every hour

Bubu AI

Parenting · early childhood · Android

Bubu is an AI parenting companion: an assistant that answers from your child's own profile, sleep predictions, personalised stories and lullabies, and a nursery hub that connects parents with their daycare. I built the Android app — Kotlin, Jetpack Compose, 20+ Gradle modules — to parity with the iOS app, plus the Android teacher app for nurseries.

Case study

Why these exist

Every origin story

Each app started as something that annoyed me. These posts are the engineering notes: what the problem was, what I tried, what shipped, and what I'd do differently.

Cura

Why I built Cura: an SSH client that shows you the problem before you open a shell

The 2 AM pager problem, why Cura reads /proc over plain SSH instead of installing an agent, how the health score is weighted, the BouncyCastle bug that silently broke TLS for every SDK in the app, and why Pro is a one-time purchase.

Ismi

Why I built Ismi: a baby-names app where every meaning has a source

Most Islamic baby-name apps ship meanings copied from each other, some of them wrong. How Ismi's names pipeline works — Wikidata harvest, Quran citation verification against the Quranic Arabic Corpus, an LLM judge that rejects homographs like 'Matt → he died' — why the app is sect-neutral, and why it ships two native apps from one dataset.

Mantra

Why I built Mantra: your own words on the lock screen, and the Android bug where setting a wallpaper kills your Activity

Affirmation apps push other people's quotes; wallpaper changers have no words. Mantra is the gap between them. The Play Store keyword that decided the name, the Material You re-theme that recreates your Activity a second after you set a wallpaper, WorkManager's first-run surprise, adaptive scrims from luminance stats, and why user photos are never paywalled.

QuestLog

Why I built QuestLog: a game backlog tracker with a roulette wheel, and the API that died halfway through

The Friday-night problem: more games saved than played, and an hour spent choosing. QuestLog's roulette wheel, why time-to-beat is the most important field in the app, what happened when RAWG shut down mid-build and IGDB replaced it, shipping a Kotlin Multiplatform codebase to Google Play, and two Compose bugs that cost real days.

Guides and notes

All posts

Design notes from Dynet: Excel as the integration contract, transactional imports, and six roles on one API

Engineering notes from building a fibre-installation planning system on Node.js, MongoDB and React: matching hostile Excel headers, importing inside a transaction with live progress over SSE, and running six roles through one JWT-guarded API.

QuillBot and Grammarly alternatives on iPhone — including the one already built into iOS

A fair comparison of paraphrasing and grammar tools on iPhone — QuillBot, Grammarly's keyboard, Apple's Writing Tools, and Textrix — on languages, rewrite styles, OCR and PDF support, pricing, and whether your text leaves the phone. Written by the developer of one of them.

Otter alternatives that work offline: on-device voice transcription and notes on iPhone

A fair comparison of voice-to-text and AI note apps on iPhone — Otter, Apple's Voice Memos and dictation, Aiko, and Murmur — on where the audio goes, what happens to the transcript afterwards, pricing model, and what actually works in airplane mode. By the developer of one of them.

Parcel, AfterShip, Shop or Underway? Choosing an iPhone package tracker by what it asks for

A fair comparison of the package-tracking apps people actually install on iPhone — Parcel, AfterShip, Shop, the carriers' own apps, Apple's built-in tracking — judged on carriers covered, delivery-day features, price model, and whether the app wants your inbox. By the developer of one of them.

Need an app built, finished, or fixed?

I take on contract work: native iOS and Android, Kotlin Multiplatform, macOS tools, on-device AI, backend, web, and App Store optimisation. Everything on this site is the portfolio. Usually a reply within a day.

How I work and what I charge
oday@saltserv.com