<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Zając na Froncie</title><description>Blog o nauce frontendu dla początkujących</description><link>https://zajac-na-froncie.netlify.app/</link><item><title>Jak powstał Destinations (cz. 5): generatory testów i CSS do druku</title><link>https://zajac-na-froncie.netlify.app/blog/jak-powstal-destinations-5-generatory-do-druku/</link><guid isPermaLink="true">https://zajac-na-froncie.netlify.app/blog/jak-powstal-destinations-5-generatory-do-druku/</guid><description>To był cel całej aplikacji: szkoleniowiec generuje losowy test i drukuje go na papierze. Losowanie w JS i @media print, czyli CSS, o którym mało kto pamięta.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Jak powstał Destinations (cz. 4): chronione trasy w React Router</title><link>https://zajac-na-froncie.netlify.app/blog/jak-powstal-destinations-4-protected-routes/</link><guid isPermaLink="true">https://zajac-na-froncie.netlify.app/blog/jak-powstal-destinations-4-protected-routes/</guid><description>Wiem już, kto jest zalogowany — teraz czas zamknąć panel przed resztą. ProtectedRoute, przekierowanie na logowanie i dlaczego to tylko połowa bezpieczeństwa.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Jak powstał Destinations (cz. 3): Firebase — baza i logowanie</title><link>https://zajac-na-froncie.netlify.app/blog/jak-powstal-destinations-3-firebase-baza-i-logowanie/</link><guid isPermaLink="true">https://zajac-na-froncie.netlify.app/blog/jak-powstal-destinations-3-firebase-baza-i-logowanie/</guid><description>Gdzie mieszkają destynacje i jak schowałem panel szkoleniowca za logowaniem. Firestore, Firebase Auth i dlaczego klucz w kodzie tym razem NIE jest wyciekiem.</description><pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Jak powstał Destinations (cz. 2): z JavaScriptu na TypeScript</title><link>https://zajac-na-froncie.netlify.app/blog/jak-powstal-destinations-2-z-js-na-ts/</link><guid isPermaLink="true">https://zajac-na-froncie.netlify.app/blog/jak-powstal-destinations-2-z-js-na-ts/</guid><description>Projekt zaczął życie w czystym JS. Oto dlaczego i jak przepisałem go na TypeScript, co mnie w JS uwierało i jaki błąd TS złapał w sekundę.</description><pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Jak powstał Destinations (cz. 1): pomysł, domena i stack</title><link>https://zajac-na-froncie.netlify.app/blog/jak-powstal-destinations-1-pomysl-domena-stack/</link><guid isPermaLink="true">https://zajac-na-froncie.netlify.app/blog/jak-powstal-destinations-1-pomysl-domena-stack/</guid><description>Generator testów ze znajomości kierunków dla pracowników lotniska. Skąd pomysł, jak wygląda model danych i dlaczego postawiłem na React, Firebase i React Router.</description><pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Jak powstał Avia Weather (cz. 3): jak rozszyfrować METAR na ludzki język</title><link>https://zajac-na-froncie.netlify.app/blog/jak-powstal-metar-3-dekodery-i-testy/</link><guid isPermaLink="true">https://zajac-na-froncie.netlify.app/blog/jak-powstal-metar-3-dekodery-i-testy/</guid><description>BKN020, VFR, TEMPO, VRB — kody, które rozumie dyspozytor, ale nie zwykły użytkownik. Dekodery do czytelnego polskiego i testy w Vitest.</description><pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Jak powstał Avia Weather (cz. 2): skąd brać dane i jak ukryć klucz API</title><link>https://zajac-na-froncie.netlify.app/blog/jak-powstal-metar-2-dane-i-funkcja-serwerowa/</link><guid isPermaLink="true">https://zajac-na-froncie.netlify.app/blog/jak-powstal-metar-2-dane-i-funkcja-serwerowa/</guid><description>Prawdziwe dane METAR i TAF z AVWX API — i dlaczego token nie może trafić do przeglądarki. Funkcja serwerowa Netlify jako bezpieczny pośrednik.</description><pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Jak powstał mój METAR (cz. 1): pomysł i stack</title><link>https://zajac-na-froncie.netlify.app/blog/jak-powstal-metar-1-pomysl-i-stack/</link><guid isPermaLink="true">https://zajac-na-froncie.netlify.app/blog/jak-powstal-metar-1-pomysl-i-stack/</guid><description>Pierwsza część serii o budowie aplikacji pogody lotniczej. Skąd pomysł, czym jest METAR i dlaczego wybrałem React, TypeScript i AVWX.</description><pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Dlaczego mój git push nie działał — 5 pułapek początkującego</title><link>https://zajac-na-froncie.netlify.app/blog/git-push-nie-dzialal/</link><guid isPermaLink="true">https://zajac-na-froncie.netlify.app/blog/git-push-nie-dzialal/</guid><description>Spędziłem godzinę, zanim mój kod trafił na GitHub. Oto 5 pułapek — od pagera i pustego agenta SSH po HTTPS vs SSH — i jak je rozbroić.</description><pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Jak trener z lotniska uczy się frontendu (i po co ten blog)</title><link>https://zajac-na-froncie.netlify.app/blog/pierwszy-wpis/</link><guid isPermaLink="true">https://zajac-na-froncie.netlify.app/blog/pierwszy-wpis/</guid><description>Pracuję w lotnictwie i uczę się frontendu od zera. Zaczynam blog, w którym dokumentuję tę drogę.</description><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate></item></channel></rss>