[{"data":1,"prerenderedAt":88},["ShallowReactive",2],{"post-pl-PL-todevelop-pl":3,"adjacent-posts-pl-PL-todevelop-pl":24,"related-posts-pl-PL-todevelop-pl":52},{"id":4,"slug":4,"publishDate":5,"updateDate":-1,"title":6,"excerpt":7,"image":8,"category":9,"tags":10,"author":-1,"draft":14,"metadata":15,"content":16,"featured":14,"lang":17,"renderedContent":18,"tocItems":19},"todevelop-pl",["Date","2024-06-01T00:00:00.000Z"],"Od WordPress do Qwik","Przepisałem stronę z WordPressa na Qwik – szybsze ładowanie, Lighthouse 100%.","\u002Fimages\u002Fblog\u002Ftodevelop-desktop.webp","projekty",[11,12,13],"qwik","wordpress","refaktoryzacja",false,{},"Przepisałem swoją stronę z WordPressa na Qwik. Chciałem lepszej wydajności i nowoczesnego stacku.\n\n\u003Cimg src=\"\u002Fimages\u002Fblog\u002Fqwik.webp\" width=\"100%\" height=\"100%\" alt=\"Qwik logo\"\u002F>\n\nQwik jest zbudowany wokół wydajności i małego payloadu. Główna idea: mechanizm „resumable”. Strona ładuje się szybko, bo nie trzeba hydratować całego JS – ładuje się tylko to, co potrzebne do danej interakcji. Reszta kodu „śpi” do momentu, gdy użytkownik tego zażąda. W frameworkach typu React\u002FVue zwykle najpierw serwer oddaje HTML, potem klient ładuje cały JavaScript, żeby strona stała się interaktywna. To kosztowne. Qwik ładuje tylko fragmenty potrzebne „tu i teraz”.\n\n\u003Cimg src=\"https:\u002F\u002Fcdn.builder.io\u002Fapi\u002Fv1\u002Fimage\u002Fassets%2FYJIGb4i01jvw0SRdL5Bt%2F04681212764f4025b2b5f5c6a258ad6e?format=webp&width=945\" alt=\"Diagram architektury Qwik\" \u002F>\n\nCo zrobiłem po stronie optymalizacji: lazy loading (ładowanie tego, co w viewport), pre-fetching, code splitting, minifikacja i kompresja. W Lighthouse strona ma 100%.\n\n\u003Cimg src=\"\u002Fimages\u002Fblog\u002Flighthouse.webp\" width=\"100%\" height=\"100%\" alt=\"Lighthouse score\"\u002F>\n\nPrzejście na Qwik dało mi szybszą stronę i lepsze wyniki w narzędziach. Jeśli budujesz lub przebudowujesz projekt i zależy Ci na wydajności, warto zajrzeć do Qwik.\n\n\u003Cimg src=\"\u002Fimages\u002Fblog\u002Fpreview.webp\" width=\"400\" height=\"300\" alt=\"Todevelop mobile\"\u002F>\n\n## Linki\n\n- [Qwik.dev](https:\u002F\u002Fqwik.dev\u002F)\n- [Mechanizm Resumable](https:\u002F\u002Fqwik.dev\u002Fdocs\u002Fconcepts\u002Fresumable\u002F)\n- [Lighthouse](https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Flighthouse\u002Foverview?hl=pl)","pl-PL","\u003Cp class=\"text-body-1 mb-6\">Przepisałem swoją stronę z WordPressa na Qwik. Chciałem lepszej wydajności i nowoczesnego stacku.\u003C\u002Fp>\n\u003Cimg src=\"\u002Fimages\u002Fblog\u002Fqwik.webp\" width=\"100%\" height=\"100%\" alt=\"Qwik logo\"\u002F>\n\u003Cp class=\"text-body-1 mb-6\">Qwik jest zbudowany wokół wydajności i małego payloadu. Główna idea: mechanizm „resumable”. Strona ładuje się szybko, bo nie trzeba hydratować całego JS – ładuje się tylko to, co potrzebne do danej interakcji. Reszta kodu „śpi” do momentu, gdy użytkownik tego zażąda. W frameworkach typu React\u002FVue zwykle najpierw serwer oddaje HTML, potem klient ładuje cały JavaScript, żeby strona stała się interaktywna. To kosztowne. Qwik ładuje tylko fragmenty potrzebne „tu i teraz”.\u003C\u002Fp>\n\u003Cimg src=\"https:\u002F\u002Fcdn.builder.io\u002Fapi\u002Fv1\u002Fimage\u002Fassets%2FYJIGb4i01jvw0SRdL5Bt%2F04681212764f4025b2b5f5c6a258ad6e?format=webp&width=945\" alt=\"Diagram architektury Qwik\" \u002F>\n\u003Cp class=\"text-body-1 mb-6\">Co zrobiłem po stronie optymalizacji: lazy loading (ładowanie tego, co w viewport), pre-fetching, code splitting, minifikacja i kompresja. W Lighthouse strona ma 100%.\u003C\u002Fp>\n\u003Cimg src=\"\u002Fimages\u002Fblog\u002Flighthouse.webp\" width=\"100%\" height=\"100%\" alt=\"Lighthouse score\"\u002F>\n\u003Cp class=\"text-body-1 mb-6\">Przejście na Qwik dało mi szybszą stronę i lepsze wyniki w narzędziach. Jeśli budujesz lub przebudowujesz projekt i zależy Ci na wydajności, warto zajrzeć do Qwik.\u003C\u002Fp>\n\u003Cimg src=\"\u002Fimages\u002Fblog\u002Fpreview.webp\" width=\"400\" height=\"300\" alt=\"Todevelop mobile\"\u002F>\n\u003Ch2 class=\"text-h4 font-weight-black  text-primary mt-16 mb-6 border-s-lg border-primary ps-4\">Linki\u003C\u002Fh2>\n\u003Cul class=\"pa-0 mb-6\">\n\u003Cli class=\"d-flex align-start mb-2\">\u003Cspan class=\"text-primary font-weight-bold me-2\">▹\u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Fqwik.dev\u002F\" class=\"text-primary font-weight-bold text-decoration-none\">Qwik.dev\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli class=\"d-flex align-start mb-2\">\u003Cspan class=\"text-primary font-weight-bold me-2\">▹\u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Fqwik.dev\u002Fdocs\u002Fconcepts\u002Fresumable\u002F\" class=\"text-primary font-weight-bold text-decoration-none\">Mechanizm Resumable\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli class=\"d-flex align-start mb-2\">\u003Cspan class=\"text-primary font-weight-bold me-2\">▹\u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Flighthouse\u002Foverview?hl=pl\" class=\"text-primary font-weight-bold text-decoration-none\">Lighthouse\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n",[20],{"id":21,"text":22,"level":23},"linki","Linki",2,{"prev":25,"next":37},{"id":26,"slug":26,"publishDate":27,"updateDate":-1,"title":28,"excerpt":29,"image":30,"category":9,"tags":31,"author":-1,"draft":14,"metadata":35,"content":36,"featured":14,"lang":17},"gramy-w-miescie",["Date","2024-09-15T00:00:00.000Z"],"Gramy w Mieście – platforma gier miejskich i online","Platforma do gier w terenie i online: zagadki, historia i kultura miasta. Dwa tryby – gotowe trasy lub własne przygody.","\u002Fimages\u002Fprojects\u002Fgramywmiescie.webp",[32,33,34],"gry-miejskie","aplikacja-webowa","escape-room",{},"Gramy w Mieście wzięło się z tego, że często mijamy ciekawe miejsca, nie znając ich historii. Chciałem połączyć spacer z zagadkami i informacjami – żeby nie tylko chodzić, ale odkrywać.\n\nZasada: wybierasz grę miejską lub online, dostajesz lokalizację zagadki, odnajdujesz miejsce, rozwiązujesz zadanie. Po dobrej odpowiedzi system pokazuje ciekawostki i informacje historyczne. Każda rozgrywka to przy okazji lekcja o miejscu.\n\nSą dwa tryby. Gry miejskie – idziesz po mieście i rozwiązujesz zagadki na miejscu. Można dołączyć do gotowych tras (moich i partnerów) albo stworzyć własną przygodę z zagadkami w okolicy. Gry online – zagadki do rozwiązania z dowolnego miejsca, np. z Google Street View i Wikipedii. Dla tych, którzy nie mogą być w mieście osobiście.\n\nObserwowanie, jak użytkownicy odkrywają miejsca, o których wcześniej nie słyszeli, daje mi satysfakcję. Mieszkańcy odkrywają zakątki swoich dzielnic, turyści – lokalne historie, nauczyciele używają platformy na wycieczkach.\n\nPraca nad projektem utwierdziła mnie, że dobre projekty biorą się z pasji i chęci podzielenia się nią. Planuję dalszy rozwój: zagadki od użytkowników, możliwe elementy AR, społeczność wokół odkrywania miast. Zapraszam do wypróbowania – [Gramy w Mieście](https:\u002F\u002Fgramywmiescie.pl\u002F).\n\n## Linki\n\n- [Gramy w Mieście – strona projektu](https:\u002F\u002Fgramywmiescie.pl\u002F)",{"id":38,"slug":38,"publishDate":39,"updateDate":-1,"title":40,"excerpt":41,"image":42,"category":43,"tags":44,"author":-1,"draft":14,"metadata":50,"content":51,"featured":14,"lang":17},"projekt-innowacje-2023-zimowy",["Date","2024-02-10T00:00:00.000Z"],"Projekt Innowacje 2023\u002F2024 – Zimowa edycja z Nuxt i Firebase","Zima 2023\u002F2024 – Projekt Innowacje na PŁ. Nuxt 3, Firebase, Git Flow. Studenci od podstaw Vue do pełnoprawnego meta-frameworku.","\u002Fimages\u002Fblog\u002Fpl-innowacje4.webp","edukacja",[45,46,47,48,49],"nuxt","firebase","vue","mentoring","blog",{},"W zimowym semestrze 2023\u002F2024 prowadziłem kolejną edycję Projektu Innowacje na Politechnice Łódzkiej. Tym razem stack to Nuxt 3 (meta-framework Vue), Firebase, Pinia, Vuetify, i18n i Git Flow. Obserwowanie, jak studenci przechodzą od podstaw Vue do Nuxt z file-based routingiem i auto-importami, było dla mnie cennym doświadczeniem.\n\nTechnologie: Nuxt 3 (SPA, file-based routing, auto-imports), Firebase (Auth, Firestore, Storage, hosting), Pinia, Vuetify, i18n, Git Flow.\n\nNa początku omawialiśmy różnicę między SSR a CSR. W tym projekcie Nuxt w trybie SPA – bez serwera renderującego, skupienie na interfejsie. Studenci musieli ogarnąć strukturę Nuxt: `\u002Fpages`, `\u002Fcomposables`, `\u002Fserver`. Git Flow: feature branches, release branches, hotfix branches, code review, konflikty. Współpraca przez repozytorium to w IT podstawa; obserwowanie, jak studenci rozwiązują konflikty i komunikują się, pokazało mi wartość wymiany doświadczeń.\n\nFirebase był dla wielu pierwszym „backendem jako usługą”. Pracowaliśmy nad Auth (email\u002Fhasło, Google, reset hasła, role), Firestore (kolekcje, dokumenty, real-time, Security Rules). Security Rules okazały się jednym z trudniejszych elementów – myślenie o bezpieczeństwie w sposób deklaratywny. Przejście od „własny serwer” do cloud-first było dla nich ważną zmianą perspektywy.\n\nPinia do stanu globalnego – kiedy stan globalny, kiedy lokalny. i18n: lazy loading tłumaczeń, locale routing, language switcher.\n\nProjekt finalny: rejestracja, logowanie (email + Google), reset hasła, role, pełny CRUD dla dwóch typów encji (paginacja, wyszukiwanie, real-time), panel admina, minimum dwa języki, responsywność z Vuetify.\n\nWyzwania: złożoność architektury (przejście z prostego Vue na Nuxt), asynchroniczność i synchronizacja stanu, Firebase Security Rules, Git Flow w praktyce (konflikty = komunikacja i kompromisy).\n\nDziękuję studentom za zaangażowanie i organizatorom PŁ za możliwość dzielenia się wiedzą. Nuxt i Firebase to dobre narzędzia do nauki zaawansowanych aplikacji webowych.\n\n## Linki\n\n- [Projekt Innowacje – Politechnika Łódzka](https:\u002F\u002Fwww.p.lodz.pl\u002F)\n- [Nuxt.js](https:\u002F\u002Fnuxt.com\u002F)\n- [Firebase](https:\u002F\u002Ffirebase.google.com\u002F)",[53,64,77],{"id":54,"slug":54,"publishDate":55,"updateDate":-1,"title":56,"excerpt":57,"image":58,"category":9,"tags":59,"author":-1,"draft":14,"metadata":62,"content":63,"featured":14,"lang":17},"kolekcjoner-chwil",["Date","2026-02-01T00:00:00.000Z"],"Kolekcjoner Chwil – pomysły na spędzanie czasu","Aplikacja z pomysłami na wyjścia i aktywności. Filtry (budżet, czas, kategoria), tryby dla siebie, pary i grupy.","\u002Fimages\u002Fprojects\u002Fkolekcjonerchwil.webp",[60,33,61],"inspiracje","pomysły",{},"Ile razy planowaliście weekend z przyjaciółmi i po godzinie wciąż nie było pomysłu? Albo chcieliście zaskoczyć kogoś bliskiego, ale zabrakło inspiracji? Kolekcjoner Chwil wyszedł z takich sytuacji. Chciałem narzędzie, które nie tylko podsuwa pomysły, ale zachęca do wyjścia z rutyny.\n\nBazę pomysłów zbierałem miesiącami – z rozmów, własnych wyjazdów i obserwacji. Każda propozycja ma być realna do zrobienia i warta czasu. Szybko doszedłem do wniosku, że jeden zestaw dla wszystkich nie ma sensu – stąd personalizacja. Trzy tryby: dla siebie (czas solo), dla pary, dla grupy. Filtry: budżet, lokalizacja, dostępny czas, kategorie. W kilka sekund można zawęzić do tego, co pasuje, zamiast godzin przeglądania sieci.\n\nKategorie są zróżnicowane – sport, kultura, relaks, zabawa. Starałem się zachować balans między aktywnościami wymagającymi przygotowania a tymi na spontan. Od użytkowników dostaję sygnały, że próbują czegoś nowego: warsztaty garncarskie, nocne zwiedzanie miasta, wyjazdy za miasto. To dla mnie najlepszy feedback.\n\nInterfejs oparłem na kartach – szybkie przeglądanie, zapisywanie ulubionych. Aplikacja ma działać na komórce i desktopie; pomysły często przychodzą w biegu, więc dostępność ma znaczenie.\n\nWspólne, realne doświadczenia nadal budują relacje. Kolekcjoner ma być mostkiem między „może coś zrobić” a „zróbmy to”. Zapraszam do wypróbowania – [Kolekcjoner Chwil](https:\u002F\u002Fkolekcjonerchwil.pl\u002F).\n\n## Linki\n\n- [Kolekcjoner Chwil](https:\u002F\u002Fkolekcjonerchwil.pl\u002F)",{"id":65,"slug":65,"publishDate":66,"updateDate":-1,"title":67,"excerpt":68,"image":69,"category":9,"tags":70,"author":-1,"draft":14,"metadata":74,"content":75,"featured":76,"lang":17},"freszkids-pl",["Date","2026-01-01T00:00:00.000Z"],"Freszkids.pl – zamawianie posiłków do szkół","Platforma usprawniająca zamawianie posiłków do szkół dla dzieci od firm cateringowych. Dla szkół bez własnej kuchni.","\u002Fimages\u002Fblog\u002Ffreszkids.webp",[71,72,73],"platforma","catering","szkoła",{},"Freszkids.pl to platforma, która usprawnia zamawianie posiłków do szkół dla dzieci od firm cateringowych. Działa tam, gdzie szkoły nie mają własnej kuchni i korzystają z cateringu zewnętrznego. Projekt ma dwie główne sekcje: dla rodziców i dla firm cateringowych.\n\nSekcja dla rodziców pozwala zamawiać posiłki dla dzieci w szkole. Rodzic wybiera szkołę dziecka, przegląda menu na dany dzień lub tydzień, zaznacza posiłki i składa zamówienie. Można ustawić preferencje żywieniowe, alergeny i diety specjalne. System przypomina o zamówieniach i pozwala płacić online.\n\nSekcja dla firm cateringowych umożliwia zarządzanie ofertami, menu, zamówieniami i dostawami. Firma dodaje menu na konkretne dni, ustawia ceny, określa terminy zamówień i dostaw. Widzi wszystkie zamówienia z danej szkoły, może eksportować listy do przygotowania posiłków i śledzić płatności.\n\nProces jest prosty: rodzic wybiera posiłki, płaci, firma dostarcza. Szkoła nie musi koordynować zamówień ani zbierać gotówki. Wszystko działa przez platformę. Rodzice mają kontrolę nad tym, co jedzą ich dzieci, a firmy cateringowe mają przejrzysty system zarządzania zamówieniami.\n\nStrona jest responsywna i szybka. Większość rodziców zamawia posiłki na telefonach, więc mobilna wersja była priorytetem. Ładowanie strony jest zoptymalizowane – zdjęcia są kompresowane, kod jest minifikowany.\n\nSEO jest ważne. Strony mają odpowiednie meta tagi, strukturyzowane dane, sitemap. Dzięki temu platforma pojawia się w wynikach wyszukiwania, gdy ktoś szuka cateringu do szkół czy zamawiania posiłków dla dzieci.\n\nPlanujemy rozszerzyć funkcjonalności: powiadomienia SMS, integrację z systemami szkolnymi, raporty żywieniowe dla rodziców, możliwość oceniania posiłków. Na razie skupiamy się na tym, żeby podstawowy proces zamawiania i dostarczania posiłków działał bez problemów.\n\n## Linki\n\n- [Freszkids.pl](https:\u002F\u002Fwww.freszkids.pl\u002F)",true,{"id":78,"slug":78,"publishDate":79,"updateDate":-1,"title":80,"excerpt":81,"image":82,"category":9,"tags":83,"author":-1,"draft":14,"metadata":86,"content":87,"featured":76,"lang":17},"my-gym-track",["Date","2025-09-15T00:00:00.000Z"],"Rejestr Formy – śledzenie treningów siłowych","Aplikacja do zapisywania treningów i analizy postępów. Baza ćwiczeń, gotowe plany, wykresy. Powstała, bo żadna z dostępnych nie dawała mi pełnej kontroli nad danymi.","\u002Fimages\u002Fprojects\u002Fmy-gym-track.webp",[84,33,85],"fitness","tracking",{},"Przez lata treningów testowałem różne sposoby zapisywania postępów: zeszyt, arkusze, aplikacje. Żadne nie dawało mi poczucia pełnej kontroli – albo za mało analizy, albo reklamy, albo drogie subskrypcje. Postanowiłem zrobić narzędzie pod siebie i innych, którzy chcą świadomie śledzić rozwój. Tak powstał Rejestr Formy (My Gym Track).\n\nZasada: użytkownik ma spędzać czas na treningu, nie na klikaniu. Interfejs ma być szybki – kilka ruchów, wpisanie ciężaru i powtórzeń, koniec. Aplikacja sama zapisuje czas, liczy objętość treningu i wykrywa rekordy osobiste. Powiadomienie „pobiłeś PR” daje konkretną motywację.\n\nBaza to ponad 1600 ćwiczeń z opisem techniki i zaangażowanych mięśni. Plus ponad 600 gotowych planów pod różne cele (masa, redukcja, siła, wytrzymałość). Wiem z własnego doświadczenia, jak przytłaczające może być układanie planu od zera; gotowe plany pozwalają zacząć od razu.\n\nWykresy dla każdego ćwiczenia pokazują progres w czasie – nie tylko maksima, ale trendy i plateau. Badania, które przeglądałem przy projekcie, pokazują, że zapisywanie treningów poprawia regularność: użytkownicy aplikacji realizują ok. 81% zaplanowanych treningów vs 52% bez takiego wsparcia; w jednym z badań średni wzrost w przysiadzie +19 kg, w wyciskaniu +8 kg po 10 tygodniach. Systematyczność i dane działają.\n\nPriorytetem była kontrola użytkownika nad danymi. Rejestr Formy nie wyświetla reklam i nie sprzedaje danych. Treningi należą do Ciebie. To ogranicza model biznesowy, ale dla mnie ważniejsze jest to, że narzędzie realnie pomaga. Wiadomości od użytkowników o pierwszych 100 kg w przysiadzie czy o tym, że w końcu trenują regularnie, są dla mnie najlepszym feedbackiem.\n\nPlanuję dalszy rozwój: zaawansowana analiza, dzielenie się treningami z trenerem lub partnerem, ewentualnie integracje z wearables. Chcę zachować prostotę i kontrolę użytkownika nad danymi. Zapraszam do wypróbowania – [Rejestr Formy](https:\u002F\u002Fmy-gym-track.web.app\u002F).\n\n## Linki\n\n- [Rejestr Formy](https:\u002F\u002Fmy-gym-track.web.app\u002F)",1790687720791]