EDUCATION / MOBILITY

Test2Drive

by Asil Türkmen

Test2Drive — TRNC driving license exam preparation app by Asil Türkmen with practice tests, built with Vue 3 and Pinia

Test2Drive is a comprehensive preparation app for the TRNC (North Cyprus) driving licence exam. It covers 144+ traffic signs, offers practice tests tailored to each licence category, tracks your progress, and works in both Turkish and English.

The problem

Preparing for the TRNC driving exam has traditionally meant paper question booklets and photocopies passed around. There was no modern, structured way to drill the traffic signs and take realistic practice tests for your specific licence category.

Traffic signs in particular are pure memorization — and memorization is exactly what a focused app does better than a booklet: repetition, instant feedback, and no lost photocopies.

Technical architecture

The app is built with Vue 3 and TypeScript on Vite, with Pinia managing application state. Question banks are organized per licence category, so a practice test always reflects what that candidate will actually face. The sign library presents all 144+ traffic signs for systematic study, progress tracking shows how far you have come, and the whole interface is bilingual TR/EN.

TypeScript keeps the question-bank structures explicit — every question knows its category, its answer and its place in the flow — while Pinia holds the session state (current test, answers, progress) in one predictable place instead of scattering it across components.

Challenges and what I learned

Test2Drive was my first large project in Vue after working mostly in React, so the real challenge was learning to think in another framework: Vue's reactivity model, component composition, and state management with Pinia instead of the patterns I already knew.

Modeling licence-specific question sets cleanly mattered just as much — the data design is what keeps the practice tests honest. And the bilingual requirement ran deeper than translated labels: every question and sign name exists in both Turkish and English, and the interface has to switch between them without losing your place in a test.

Progress tracking needed restraint too: enough feedback to make practicing feel rewarding, without turning a study tool into a dashboard. Seeing how far you have come — and simply continuing — is the whole loop.

Switching ecosystems made me a more deliberate engineer: the patterns transfer, the syntax doesn't, and knowing the difference is the skill.

Technologies

  • Vue 3
  • Pinia
  • Vite
  • TypeScript

Other projects

All projects