Aplikacja online: https://pablop76.github.io/metro-test/
Aplikacja do nauki i sprawdzania wiedzy przed egzaminem na stanowisko maszynisty metra warszawskiego. Pytania są losowane z public/questions.json i podzielone na kategorie tematyczne.
| Tryb | Opis |
|---|---|
| Standardowy | Losowy zestaw pytań z wybranej kategorii (domyślnie 30) |
| Tryb Egzaminu | 40 pytań (10 z Sygnalizacji + 30 pozostałe), próg zaliczenia 75% + brak błędów z Sygnalizacji |
| Trudne pytania | Automatycznie zbiera pytania na których popełniłeś 2 błędy z rzędu; znikają po 2 poprawnych odpowiedziach z rzędu |
| Tryb nauki | Poprawna odpowiedź oznaczona na bieżąco; błędna odpowiedź blokuje tylko ten przycisk — musisz znaleźć poprawną; brak popupów |
| Funkcja | Opis |
|---|---|
| Historia sesji | Ostatnie 15 zakończonych testów z wykresem trendu (ikona zegara) |
| Mapa metra | Wizualizacja opanowania kategorii jako stacje na mapie metra M1/M2 (ikona mapy) |
| Przed egzaminem | Analiza gotowości: wskaźnik %, słabe kategorie, najtrudniejsze pytania, alert Sygnalizacji, trend |
| Reset statystyk | Przycisk w historii sesji — kasuje historię i statystyki pytań (gwiazdki zostają) |
- Gwiazdka (⭐) na karcie pytania ręcznie oznacza je jako trudne
- Kategoria "Trudne ⭐" — pula pytań oznaczonych + pytań ze złymi seriami odpowiedzi
- Oznaczone pytania wchodzą do trybu Trudnych pytań natychmiast po zaznaczeniu
- Skróty klawiszowe:
1/2/3→ wybór odpowiedzi,Enter→ następne pytanie - Animacja slide-in między pytaniami
- Pauza i wznowienie — postęp zapisywany automatycznie po każdym pytaniu
- Wyszukiwarka pytań — filtrowanie puli po treści pytania
- Dźwięki — opcjonalne efekty przy poprawnej/błędnej odpowiedzi
- Motywy — dark/light + style wizualne (default / industrial / retro)
{
"question": "Treść pytania",
"content": ["Odpowiedź A", "Odpowiedź B", "Odpowiedź C"],
"correct": 0,
"image": "./images/przyklad.png",
"category": ["inspiro", "sygnalizacja"]
}| Pole | Typ | Opis |
|---|---|---|
question |
string | Treść pytania |
content |
string[] | Tablica 3 odpowiedzi |
correct |
0|1|2 | Indeks poprawnej odpowiedzi |
image |
string? | Opcjonalna ścieżka do grafiki |
category |
string[] | Klucze kategorii (pytanie może mieć kilka) |
| Klucz | Etykieta | Opis |
|---|---|---|
inspiro |
Inspiro | Pociągi Inspiro |
skoda |
Śkoda / Varsovia | Pociągi Škoda / Varsovia |
metropolis |
Metropolis | Pociągi Metropolis |
sop |
SOP | Systemy SOP / ATP / ATO, bezpieczeństwo ruchu |
sygnalizacja |
Sygnalizacja | Semafory, wskaźniki, sygnały — błąd dyskwalifikuje egzamin |
instrukcja |
Instrukcja | Przepisy i procedury obsługi |
linia2 |
Linia nr 2 | Specyfika linii M2 |
81 |
Seria 81 | Bonus — oddzielna kategoria, nie wchodzi do puli all |
Sesja trafia do historii tylko gdy:
- test nie jest w trybie nauki
- test nie jest powtórką błędnych odpowiedzi
- test nie jest trybem trudnych pytań
- test zawiera ≥ 20 pytań
npm install
npm startnpm run build
npm run deployWAŻNE:
package.jsonmusi zawierać"homepage": "https://pablop76.github.io/metro-test"— bez tego ścieżki do CSS/JS nie działają po wdrożeniu.