Skip to content
md ~/projects/ruhsat
Remembering Atatürk with Respect and Longing

November 10 · 88th anniversary

Remembering Atatürk with Respect and Longing

Mustafa Kemal Atatürk, founder of the Republic of Turkey, passed away at 09:05 on 10 November 1938 at Dolmabahçe Palace in Istanbul. Every year at this time the whole country stands in silence.

Keeping alive the Republic he entrusted to us is a duty we all share.

My humble body will one day turn to dust, but the Republic of Turkey will stand forever.Mustafa Kemal Atatürk
Project archive

2026In progress

Ruhsat: Car Maintenance & Fuel

  • React Native
  • Expo
  • TypeScript
  • SQLite
  • Drizzle ORM
  • Supabase
  • PostgreSQL
  • SwiftUI
  • AdMob
  • StoreKit
  • EAS Build

Overview

A fuel, service and expense log for car owners. It measures consumption correctly from full tank to full tank and sends a notification when inspection, insurance, road tax or service is due. It works without an account; signing in with email syncs the entries between phones.

01 · Problem

Low-rated reviews of car tracking apps in Türkiye keep pointing at the same problems: forced accounts and broken sign-in, entries lost when switching phones, export locked behind a paywall, fixed car lists, and consumption averages that ignore LPG and partial fill-ups.

02 · Solution

I built the app offline-first: entries are written to SQLite on the phone first and synced to Supabase if the user creates an account. I verified with RLS rules, and with tests that fail when a rule is deliberately broken, that each user can only reach their own rows. Sign-in has no password, just a 6-digit code sent by email. I wrote and tested the full-tank-to-full-tank consumption module, with LPG measured separately, and Türkiye’s inspection, insurance and road tax rules in plain TypeScript, and added the home screen widget in SwiftUI.

03 · Outcome

The result is a car log with no locked features that also works without an account: consumption and expense charts, CSV export that opens in Excel with Turkish characters intact, an icon and widget that follow light and dark mode, and a Turkish and English interface. The single banner ad can be removed with a one-time purchase.

Privacy policy