Polish driver's license theoritical exam nuxt web app https://testpj.netman.ovh
Find a file
NetMan 1100abf141 Change database (newer data)
minor: add extension jpeg in mediabox, categories order change in constants, theme tinkering
2025-12-16 23:01:57 +01:00
assets introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
components Change database (newer data) 2025-12-16 23:01:57 +01:00
db Change database (newer data) 2025-12-16 23:01:57 +01:00
i18n/locales introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
middleware introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
pages Change database (newer data) 2025-12-16 23:01:57 +01:00
providers introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
public introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
server i18n: questions in all langs 2025-12-16 20:59:36 +01:00
store introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
types introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
.env.example introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
.gitignore introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
app.vue introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
categories.ts Change database (newer data) 2025-12-16 23:01:57 +01:00
docker-compose.yml introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
Dockerfile introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
drizzle.config.ts introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
eslint.config.mjs introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
LICENSE introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
nuxt.config.ts introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
package.json introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
pnpm-lock.yaml introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
prettier.config.mjs introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
README.md i18n: questions in all langs 2025-12-16 20:59:36 +01:00
tailwind.config.js introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00
tsconfig.json introduce nuxt-prawo-jazdy 2025-12-16 20:21:04 +01:00

nuxt-prawo-jazdy

Required

The db-prawo-jazdy project is designed for this one in mind, so use it in conjunction with this - visit it for more details

^^ Above is kind of outdated, project moved from PostgreSQL to SQLite - I included a database.db file in the db/ folder, although it has older dataset of questions from the Ministry - foreshadowing...

You also need the exam media files from the (Ministry of Infrasture)[https://www.gov.pl/web/infrastruktura/prawo-jazdy] - the latest files should be there

The newest at the moment of me writing this (December 16th 2025) are the (visualisations for questions from November 2025)[https://www.gov.pl/pliki/mi/pytania_egzaminacyjne_na_prawo_jazdy_11_2025.zip]

To-do:

  • re-forge database structure (good for now)
  • choose category (good for now)
  • come up with how to show results appropriately
  • better answer click recognition
  • beautify website (good for now)
  • Fixed? Needs testing, but should be fine question-mark? - fix pinia middleware between pages, MAJOR ISSUE - finishing exam sometimes redirects to homepage instead of results
  • question timers
  • exam (& results?) warning leave message on exit and timer end (and definitely on refresh)
  • add keybinds:
    • S - start
    • D - nast.pyt
    • X - koniec egzaminu (na pewno chcesz zakonczyc egzamin?)
    • T - Tak
    • N - Nie
    • A - A
    • B - B
    • C - C
  • i18n - pl, en, de, ua (not all questions are available in ua, api handle)
    • UI i18n
      • pl
      • en
      • de
      • ua
    • db: examstore add language field, api handle languages (questions lang)
  • clean up js code in exam.vue and result.vue (currently a little bit of a mess)

Some information about the project

My intention is, to share access to test exams free of charge, you don't have to pay me - although you can, I greatly appreciate if you donate!

I'm planning to host this project publicly and to put non-invasive ads if it gains enough traction

All data used by this software is public information by definition provided in the Polish Constitution - article 61., and can be acquired by either checking above links on the gov website, or by writing to the Ministry (if something happened to be missing) ==> (blog post to write in the future)

This project is a website mimicking an official driver's license theoritical exam (for all license categories provided by the Ministry: A, A1, A2, AM, B, B1, C, C1, D, D1, T, PT) with a seperate media http server (not included here), connected using drizzle ORM to a SQLite database

Setup

This project utilizes pnpm, thus it is recommended

pnpm install

Check out .env.example, mainly CDN_URL for media http url

As of Dec. 16 2025 a test database is included at ./db/database.db

Development Server

Start the development server on http://localhost:3000:

pnpm run dev

Production

Build the application for production:

pnpm build

Locally preview production build:

pnpm preview

Check out the Nuxt documentation for more information.

Licensing (AGPL-3.0-only)

nuxt-prawo-jazdy: Polish driver's license theoritical exam nuxt web app

Copyright (C) 2025 NetMan

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, AGPL-3.0-only.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.