Jak powstał Destinations (cz. 1): pomysł, domena i stack
11.10.2026 · 2 min czytania
Nieco starszy projekt, nowa seria. Tym razem opowiem, jak powstał Destinations — aplikacja, która wyrosła wprost z mojej codziennej pracy.
Problem, który znam z pracy#
Jako szkoleniowiec regularnie sprawdzam, czy nowi pracownicy znają kierunki: jakie miasto kryje się pod danym kodem IATA i do jakiej strefy należy. Do tego trzeba testów. A robienie ich ręcznie, za każdym razem w innej wersji (żeby nikt nie ściągał od sąsiada), to syzyfowa, powtarzalna robota.
Pomysł#
Destinations robi dwie rzeczy:
- Generuje testy do druku z bazy destynacji — za każdym razem inny zestaw.
- Daje mi, jako szkoleniowcowi, panel do zarządzania bazą i drukowania tabel do nauki.
Czyli od razu są dwa światy: zwykły użytkownik, który tylko generuje test, oraz szkoleniowiec, który zarządza danymi. Ten drugi musi być schowany za logowaniem — ale o tym w kolejnych częściach.
Domena: czym w ogóle jest „destynacja”#
Zanim cokolwiek napisałem, musiałem nazwać rzeczy. Jedna destynacja to w moim świecie cztery informacje: kod lotniska (IATA), miasto, państwo i strefa, do której należy. W pierwszej wersji wyglądało to mniej więcej tak:
const destinations = [
{
abbreviation: "STN",
expansion: "Londyn Stansted",
country: "Wielka Brytania",
zone: "Non-Schengen",
},
// kolejne destynacje
];
To uproszczony przykład — dostosuj pola do swoich danych, jeśli odtwarzasz projekt.
Stack i dlaczego akurat taki#
- React + Vite — chciałem szybkiego startu i jednej aplikacji w przeglądarce (SPA), bez przeładowań.
- Firebase (Firestore + Auth) — baza danych i logowanie bez stawiania własnego serwera. To był kluczowy wybór.
- React Router — bo mam dwa oddzielne światy (publiczny generator i zamknięty panel), więc potrzebowałem ścieżek i ochrony niektórych z nich.
Świadoma decyzja: najpierw JavaScript, TypeScript później#
I tu ważna uwaga, bo wrócę do niej w części 2. Pierwszą wersję Destinations napisałem w JavaScripcie (JSX) — mimo że TypeScript już wtedy trochę znałem.
To nie było przeoczenie. To był wybór.
Innymi słowy: świadomie wziąłem na siebie trochę „długu technicznego”, żeby szybciej dowieźć wartość. A potem, już spokojnie, ten dług spłaciłem — przepisując projekt na TypeScript.
I to jest temat na część 2: jak wyglądała migracja z JS na TS, co mnie w JS uwierało i co TypeScript wyłapał, gdy już się za to zabrałem.