The EhliyetPro course panel listing active trainees with demo data, showing masked ID numbers, licence class, status and payment state for each one.
A trainee record with sample data, showing masked identity number, uploaded documents and remaining required lesson hours.
The collections screen with an instalment plan, recorded payments by method and an outstanding balance.
The ehliyetpro.com product site on desktop, with the headline about keeping a driving school's records in one panel and a preview of the weekly lesson calendar.

EhliyetPro

Management software for Turkish driving schools that brings trainee records, lesson planning, exams, collections, fleet and instructor pay into one system.

Software product · Personally developed

Status
Live · onboarding on requestThe product runs in production and its site answers at ehliyetpro.com (checked 25 October 2026). Self-service sign-up is closed, so schools are set up after they get in touch. It is offered free. I do not publish adoption figures.
My role
Developed by Gönenç. I defined the product, wrote its requirements and feature specifications, shaped the screens and built the .NET API, the web panels and portals, and the hosting and release setup.

Visit ehliyetpro.com (opens in a new tab)

In plain words

What it is
Software that runs the daily work of a driving school in one place: registering trainees, planning lessons, booking exams, recording payments, tracking vehicles and calculating instructor pay.
Who it is for
Driving school owners and office staff in Türkiye, plus their instructors and trainees, who each get their own portal.
The problem it addresses
Schools often juggle spreadsheets, paper files and separate tools. Lessons clash, vehicle documents expire unnoticed and payments are hard to follow. EhliyetPro puts these records behind one set of rules.

Many rules, scattered records

A driving school runs on rules that are easy to break by hand. An instructor cannot teach two lessons at once, a car with an expired inspection cannot be used, and trainees need their required hours before an exam. The office also keeps sensitive personal data, from identity numbers to health reports, which Turkish data protection law (KVKK) requires it to protect.

EhliyetPro is a rewrite. The earlier generation of the system sat on an unmaintained framework whose security issues could no longer be patched, and its database had no indexes or uniqueness rules.

My role

I developed EhliyetPro: the scope and requirements documents, the per-feature specifications, the screen designs and the code. That covers a .NET API on PostgreSQL, separate web apps for the course office, instructors, trainees and the head office, a marketing site, and the deployment, backup and release setup. The product documents also record pricing and risk decisions.

What exists today

The features below are in the production release. The project keeps a written feature list that separates what works from what is still on the way, and the same line is kept here. Online card payments are written but switched off in production, and the mobile app is not yet in the stores.

  • Trainee records and document checks

    Shipped

    Registration with an identity check against the population register, encrypted document storage and barcode checks against e-Devlet.

  • Lesson planner with clash checks

    Shipped

    A weekly calendar that refuses clashing lessons and lists every conflict at once: instructor, vehicle, inspection or licence class.

  • Exams and mock exams

    Shipped

    Exam scheduling with a readiness check on required hours, results hidden until the school publishes them, and school-written theory mock exams.

  • Collections ledger

    Shipped

    Instalment plans, payments by method, corrections as reversal entries, month closing and bank reconciliation.

  • Fleet and vehicle documents

    Shipped

    Vehicle records, inspection and insurance periods with expiry reminders, maintenance tracking, and accident and fine records.

  • Instructor pay

    Shipped

    Monthly earnings drafts that instructors approve or dispute from their portal, and payments recorded against them.

  • Trainee and instructor portals

    Shipped

    Web portals where trainees see lessons, exams and balances, and instructors take attendance and check their pay. Sign-in by SMS code, password or e-mail link.

  • Leads, bulk import and supplies marketplace

    Shipped

    Enquiries from the marketing site routed to schools by district, imports of up to 5,000 rows, and a marketplace module in the course panel.

  • Online card payments

    In progress

    Built and tested in the payment provider's sandbox. Production stays off until each school can be onboarded as its own sub-merchant.

  • Mobile app for trainees and instructors

    In progress

    An iOS and Android app exists in code. It has no store listing yet.

  • MEBBİS integration, SMS and WhatsApp notices, e-invoice

    Planned

    Decided or listed on the roadmap, not built.

How it works

One .NET API on PostgreSQL serves every app. Each driving school is a tenant, and tenant isolation is part of the data model rather than a filter written into each query. Personal data such as names, identity numbers and phone numbers is encrypted field by field with a key per school, and the master key is kept out of the database and the backups.

The web apps are static builds hosted on Cloudflare Pages. Their types are generated from the API's contract, so the screens and the server cannot drift apart. Every change runs through continuous integration, where compiler warnings count as errors.

Running it day to day

The office works in the course panel: registering trainees, planning the week, recording payments. Instructors use their portal from the car to take attendance and close lessons. Trainees check their own lessons, exams and balance. A head office panel lets the platform team set up schools and assign incoming leads.

Operations run on one server with Docker and no open ports, behind a Cloudflare tunnel. Encrypted nightly backups are kept for 14 days and checked every six hours, and a restore has been rehearsed.

Decisions behind it

Several decisions are written down with their reasons. The product is free, and the paid tiers were withdrawn rather than shown as coming soon. Live card payments wait for a proper sub-merchant model, because collecting money for schools would mean acting as a payment institution. Two-factor sign-in was left out until it can work properly, since a security feature that only looks active is worse than none.

What it shows

The outputs are a production system with five web apps, a written feature list that separates shipped from planned, and more than 2,800 automated back-end tests (count of 18 September 2026). I do not publish customer or usage figures. The intended value is fewer clashes, fewer missed document dates and a clearer view of who owes what.

Technical, operational and managerial

Technical

Multi-tenant SaaS.NETPostgreSQLReactField-level encryptionRole-based accessAutomated testing

Multi-tenant SaaS here means many schools share one system while each sees only its own data, enforced in the data model. Personal fields are encrypted with a key per school. Roles and permissions are separated from scope, so an instructor sees only their own lessons. A large automated test suite guards these rules.

Operational

Driving school managementLesson schedulingTrainee recordsPayment trackingInstructor workflowsFleet and document trackingExam management

The product follows the office's real day: a trainee registers, lessons are planned without clashes, exams are booked when hours are complete, payments are recorded and reconciled, and instructors are paid for closed lessons. Vehicle documents and maintenance run alongside, with reminders before dates pass.

Managerial

B2B SaaS product strategyRequirements engineeringMVP definitionPrioritizationPricing decisionsRisk management

Scope, requirements, a risk log and acceptance tests were written before and during the build. Prioritization is visible in the feature list, which keeps shipped and on-the-way items apart. Pricing moved to a single free plan, and risks such as payment licensing were handled as written decisions rather than code.

Questions answered

What does EhliyetPro do?

It runs the daily work of a Turkish driving school in one system: trainee records and documents, lesson planning, exams, payments, vehicles and instructor pay, with separate portals for instructors and trainees.

Can a driving school use it today?

The product runs in production at ehliyetpro.com. Self-service sign-up is closed as of 25 October 2026, so a school gets in touch and is set up with help.

Is it free?

Yes. The product is offered on a single free plan, and no paid tier is offered or planned at the moment.

Does it replace official systems or accounting?

No. It does not connect to MEBBİS, does not issue e-invoices, and its payment receipts are not fiscal receipts. It keeps the school's own records alongside those systems.

How is personal data protected?

Personal fields are encrypted with a key per school, identity numbers and phones are masked on screen, every unmasking is logged, and the audit trail cannot be edited. Trainees can request their data or have their record anonymised.

Which features are planned rather than available?

Live online card payments, the mobile app in the stores, MEBBİS integration, SMS and WhatsApp notices and e-invoicing are not available yet.

Proof and links