Skip to content
Emre.dev — home
Emre.dev
All work
Live2026Founder · sole engineer

Ehliyet Akademi

A driving-licence learning platform built around a spaced-repetition engine.

The short version

The scheduling engine is its own package with its own tests, because the thing that decides when you see a question again is the actual product.

The Ehliyet Akademi home page: a diagnostic-test call to action beside counts of questions, lessons, traffic signs and vehicle images.

Web platform live at ehliyetegitim.com, verified returning HTTP 200. Mobile build 1.0.0+6 produced; store listing pending, so it is not claimed.

How Ehliyet Akademi works

An end-to-end preparation platform for Turkish class-B licence candidates, covering both the theoretical e-exam and the practical test. Built as a Turborepo monorepo with a web app, a Flutter app and four shared packages, and taken from first commit to a live production domain in twenty-eight days.

The problem

Licence preparation is sold as question dumps. Volume is not the constraint — retention is. Answering two thousand questions once teaches less than answering the right two hundred on the right days.

The architecture

A Turborepo monorepo: a Next.js App Router web app, a Flutter mobile app, and shared packages for the content schema, the question bank, the database layer and the scheduling engine. Drizzle ORM over Postgres, with PGlite for embedded local execution.

The interesting decision

The spaced-repetition engine is an independent package that depends only on the content schema — no database, no framework, no network. That makes the part of the product which actually determines learning outcomes unit-testable in isolation rather than only observable in production.

What it does now

Quality gates that mirror CI exactly, architecture decision records kept in-repo throughout, and a binding content rule: an original question bank, with "official rule" reserved for verified legislation.

Worth knowing

  • The scheduling engine is framework-free and database-free, so its behaviour is provable rather than merely observable.
  • PGlite alongside Postgres means the same schema runs embedded and hosted, so local development and tests are real rather than mocked.
  • Documentation discipline enforced by structure: decision records in-repo, a roadmap treated as the single source of truth, phase gates that must be green before work continues.
  • Content legality is a first-class constraint — original questions only, and regulatory claims restricted to verified legislation.
  • Commit history is written in Turkish for a Turkish-market product, and in English everywhere else.