Case study AI Astro Wydajność

Próbuję zbudować brutalistyczne portfolio na miarę Awwwards: proces, sposób myślenia i narzędzia

Case study: dlaczego zamieniłem portfolio 3D na plakat. Research, strony, od których się uczyłem, każda wersja i shadery, które nie przeszkadzają.

Autor: Mateusz Muszarski Zaktualizowano 7 min czytania In English

Też na dev.to Medium

Moje stare portfolio było lotem WebGL od Ziemi do Neptuna. Na moim komputerze wyglądało świetnie. Na telefonie pokazywało ekran „Oops!”. To historia zamiany go na plakat: wersje, research, strony, od których się uczyłem, i powody każdej decyzji, głównie w obrazkach.

Jak powstała ta strona, w 47 sekund. Zrobiłem ten film w kodzie z Claude Code: prawdziwa strona nagrana klatka po klatce i muzyka też napisana w kodzie. Napisy są po angielsku.

W skrócie

  • Przed: strona 3D z wynikiem 34 w mobilnym Lighthouse, która nie działała na telefonach.
  • Po: Astro, trzy języki, jeden font, kilka shaderów, które nigdy nie przeszkadzają, i od 95 do 100 punktów w mobilnym Lighthouse.
  • Jak: wiki projektu przed pierwszą linijką kodu, research nagradzanych stron i prawdziwych produktów, cztery działające projekty do wyboru i kontrola przy każdej zmianie.

Według jakich zasad pracowałem?

Sześć zasad: większość spisana przed pierwszą linijką kodu, reszta wyniesiona po drodze. Wszystko poniżej z nich wynika.

  1. Najpierw plan, potem kod. Projekt żyje w wiki, które każda sesja AI czyta na początku.
  2. Najpierw praktyczność, potem efekt wow. Robi wrażenie w 3 sekundy i działa jednym dotknięciem na telefonie.
  3. Najpierw research, potem wybór. Najpierw prawdziwe strony i ekrany; wybieram spośród działających opcji, nie szkiców.
  4. Pokaż zamiast opisywać. Obraz albo ruchome demo wszędzie tam, gdzie byłby akapit.
  5. Każda wersja zostaje. Żeby pokazać, jak się zmieniało, i móc wrócić.
  6. Nic nie wychodzi bez sprawdzenia. Testy, zrzuty ekranu, które oglądam sam, szybkość na wolnym telefonie.

Jak to szło, wersja po wersji?

Około czterech dni, a każda wersja zostaje.

  1. Stara strona: świecąca planeta i napis Projects w kosmosie Zastąpione

    00 Wcześniej

    Kosmiczne portfolio 3D

    Lot WebGL do Neptuna. Piękny na moim komputerze, ekran „Oops!” na telefonach.

  2. Zostaje

    01 5 paź 2026

    Faza 0: wiki zamiast kodu

    Najpierw plan, potem kod.

    Research, wymagania, marka, prawo i zasady projektu, zanim powstał jakikolwiek komponent.

  3. Pierwszy projekt: jasna strona jak papier, siatka rysunku technicznego i mały nagłówek Odrzucony

    02 5 paź 2026

    Drafting Table

    Czysty system to jeszcze nie dobry projekt.

    Papier, cyjanotypia i nagłówek jak tabelka rysunku. Przechodził wszystkie testy i niczym nie zapadał w pamięć.

  4. Kierunek Poster: imię i nazwisko wielkimi białymi literami na kobaltowym tle i różowa okrągła naklejka Wybrany Poster

    03 5 paź 2026

    Cztery działające kierunki

    Typografia jest obrazem.

    Orbit, Poster, Toybox i Exhibit jako działające strony. Claude polecał Orbit. Ja wybrałem Poster.

  5. Runda 2 Postera: sekcja kontaktu, Let's talk wielkimi literami na różowym tle Uwagi

    04 5 paź 2026

    Runda 2: Poster wszędzie

    Cała strona główna w stylu Poster, trzy motywy kolorów i dwa fonty sprawdzane obok siebie.

  6. Runda 3 Postera: kwalifikacje jako wysokie karty z bocznymi tytułami, jedna otwarta Zatwierdzone

    05 5 paź 2026

    Runda 3: mniej tekstu

    Mniej tekstu, więcej do zobaczenia.

    Logotypy narzędzi z nazwami, krótki film dla każdego projektu, krócej wszędzie. Tu kończą się makiety i zaczyna prawdziwy kod.

  7. Dzisiejszy nagłówek: imię i nazwisko od krawędzi do krawędzi na kobalcie, rola i dwa przyciski Działa

    06 6-8 paź 2026

    Strona, na której jesteś

    Zbudowana w Astro sekcja po sekcji, a potem przerobiona po kolejnych rundach moich uwag na żywej stronie.

Po co ją przebudowywać?

Tak wyglądało stare portfolio w ruchu:

Stara strona
Kosmiczne portfolio 3D nagrane na komputerze. Tekstury planet: Solar System Scope, CC BY 4.0.

Na moim komputerze wyglądało pięknie. Potem je zmierzyłem, 5 października 2026:

  • 13,8 MB przed przyciskiem „start”. Z czego 7,6 MB to font z emoji.
  • 34 punkty w mobilnym Lighthouse. Na spowolnionym telefonie główna treść pojawiała się po 46,9 sekundy.
  • Telefony dostawały ekran „Oops!”. Strona w ogóle tam nie działała.
  • Ruszało nią tylko kółko myszy. Bez gestów, bez klawiatury.
  • Nic dla wyszukiwarek. W surowym HTML nie było tekstu do zaindeksowania.

Ktoś, kto otwiera portfolio z wiadomości na LinkedInie, na telefonie, daje mu może dziesięć sekund. Moja stara strona wydawała je na pasek ładowania. Udowadniała, że umiem pisać shadery, ale też, że nie pomyślałem o osobie po drugiej stronie.

Dlatego bez ekranu ładowania, bez bramki na wejściu, bez przejmowania przewijania i z tą samą treścią na każdym ekranie.

Po co jest portfolio?

Żeby pokazać pracę. Brzmi oczywiście, a jednak wiele portfolio zasypuje odwiedzających akapitami „o mnie” albo sprzedaje swój stack technologiczny, jakby był czymś świętym, a projekty lądują trzy przewinięcia niżej. Tutaj projekty są zaraz po imieniu: „Zobacz projekty” to pierwszy przycisk, narzędzia to jeden pasek logotypów, a „o mnie” ma własną stronę.

Jak wyglądało planowanie?

Zanim powstała pierwsza linijka kodu, spisałem projekt w wiki ze stron w markdownie: odbiorców, markę, budżety, teksty prawne. Pomysł pochodzi z LLM Wiki (otwiera się w nowej karcie) Andreja Karpathy'ego: AI samo aktualizuje wiki, więc to, czego się nauczy, odkłada się zamiast przepadać. Trzy hooki Claude Code podsuwają właściwe strony każdej sesji:

  1. 01 Start sesji Najpierw ładują się zasady pracy i lekcje.
  2. 02 Każde polecenie Hook wskazuje strony wiki, których potrzebuje zadanie.
  3. 03 Praca Claude Code buduje i sprawdza, mając te strony przed sobą.
  4. 04 Koniec tury Jeśli zmienił się kod, a wiki nie, tura raz się zatrzymuje.
Błąd staje się jednozdaniową lekcją, a następna sesja zaczyna już z nią.

Więcej w tekście LLM wiki: pamięć projektu dla Claude Code.

Co pokazał research?

Agenci otworzyli 20 portfolio programistów nagrodzonych na Awwwards w latach 2023-2026, na komputerze i na spowolnionym telefonie (1,6 Mb/s, procesor 4× wolniejszy). Każde dostało dwie oceny od 1 do 5: Wow za to, jak bardzo zapada w pamięć, i Praktyczność za to, jak szybko dojdziesz do projektów i kontaktu. Miarą praktyczności był moment, w którym pierwszy prawdziwy link daje się kliknąć.

20 nagradzanych portfolio według Wow i Praktyczności (po jednym pomiarze, 5 października 2026)
Praktyczność →
Wow ↓ 12345
5
  • Bruno Simon
  • Samsy
  • Jordan Delcros
  • Lusion (studio)
  • Jesper Landberg
4
  • Kris Temmerman
  • Max Milkin
  • Corentin Bernadou
  • Rafa de las Heras
  • Hiroto Sato
  • Ravi Klaassens
  • Abhishek Jha
  • Antoine Wodniack
  • Stefan Vitasović
  • Edoardo Lunardi
3
  • Francesco Michelini
  • Grégory Lallé
  • Clément Grellier
  • Elliott Mangham
2
  • Valentin Mor
1

Obie oceny 4 lub więcej: tylko 4 z 20 stron

Co z tego wyszło:

  • Nagroda nie oznacza użyteczności. Na spowolnionym telefonie tylko 8 z 20 stron dało się użyć w ciągu 3 sekund, a 9 nie dało się użyć nawet w ciągu 10. Cztery najmniej praktyczne (światy jak z gier i intra z bramką) miały nawet wyższą średnią ocenę Site of the Day niż trzy najbardziej praktyczne.
  • Jury nie zatrudnia. Awwwards liczy projekt graficzny w 40%, użyteczność w 30%, kreatywność w 20% i treść w 10%, a jurorzy to projektanci i programiści. Rekruter pyta o jedno: czy znajdę projekty i kontakt?
  • Efektowna i praktyczna naraz jest możliwa, ale rzadka. Tylko cztery strony dostały co najmniej 4 w obu ocenach. Co je łączy: prawdziwe linki od pierwszego ekranu i pokaz obok treści, nigdy przed nią.

Tak to wygląda na telefonie. Najpierw immersyjny koniec skali:

Portfolio Bruno Simona na telefonie: mały samochód 3D w fioletowym świecie i napis Click to start Kliknij, żeby zacząć Bruno Simon
Portfolio Samsy na telefonie: ciemny ekran ze świecącym czerwonym robotem i bez linków Brak linków w HTML Samsy
Portfolio Jordana Delcrosa na telefonie: czarny ekran z cienkim paskiem ładowania Około 20 s ładowania Jordan Delcros
Trzy z najbardziej zapadających w pamięć stron w badaniu, na spowolnionym telefonie (5 października 2026). Cytowane w celu omówienia; strony należą do ich autorów: bruno-simon.com, samsy.ninja, jordan-delcros.com.

I cztery, którym udało się jedno i drugie. Każda dała tej stronie jakiś pomysł:

Portfolio Edoardo Lunardiego na telefonie: okna jak w systemie operacyjnym z tekstem o autorze, linkami i galerią prac Prawdziwe linki od pierwszego ekranu Edoardo Lunardi
Portfolio Jespera Landberga na telefonie: pionowa lista kart z projektami Pokaz obok treści Jesper Landberg
Portfolio Antoine'a Wodniacka na telefonie: czerwone faliste linie, napis Creative Developer i przycisk Hire me w nagłówku Hire me w nagłówku Antoine Wodniack
Portfolio Stefana Vitasovicia na telefonie: duża typografia przecięta szarymi paskami cenzury Jeden efekt-wizytówka Stefan Vitasović
Efektowne i praktyczne, i co wziąłem od każdej. Cytowane w celu omówienia; strony należą do ich autorów: edoardolunardi.dev, jesperlandberg.com, wodniack.dev, stefanvitasovic.dev.

Pomysły na sekcje dał Mobbin (otwiera się w nowej karcie), biblioteka prawdziwych ekranów z działających produktów. Tematy do wyboru nad moim formularzem kontaktowym to jeden z nich: zaczynasz od dotknięcia, a nie od pustego pola.

Dlaczego nie kolejny świat 3D?

Szczerze? Uwielbiam je. Moje poprzednie portfolio było jednym z nich. Ale zmierzyłem już wtedy oba rodzaje stron, a bilans wyglądał tak:

Pełny świat 3D Ta strona
Pierwszy ekran ekran ładowania albo „kliknij, żeby zacząć” moje imię i nazwisko, rola i dwa przyciski
Linki często żadnych w HTML (Samsy, Jordan Delcros) każdy link to prawdziwy HTML
Wyszukiwarki i czytniki ekranu tekst narysowany w WebGL jest dla nich niewidoczny prawdziwy tekst, malowany jako pierwszy
Wolny telefon 9 z 20 nagrodzonych stron bezużytecznych przez 10 s shadery startują po tekście i tylko wtedy, gdy je widać
Brak WebGL lub WebGPU błąd zamiast strony (Kris Temmerman) obraz w CSS pod spodem

Efekt wow zostaje, ale jako warstwa, a nie bramka. Na tej stronie działają cztery shadery, napisane dla niej bez żadnej biblioteki:

Raster
Poziomice
Odbitki riso
Glut
Raster na stronie Wszystkie projekty, poziomice w każdej stopce, odbitki riso i glut na stronie Moje życie. Każdy startuje, gdy tekst jest już na ekranie, działa tylko wtedy, gdy go widać, i stoi w miejscu przy ograniczeniu ruchu albo po wciśnięciu pauzy.

Jak prowadzę AI?

Jak mały zespół. Daję brief głównemu agentowi, subagenci robią research równolegle, serwery MCP dostarczają prawdziwe dane, hooki pilnują ryzykownych poleceń, testy sprawdzają wynik, a ja go przeglądam. AI pisze dużo kodu; decyzje należą do mnie.

Klocki, z których to zbudowałem, opisałem w tekście o skillach, hookach, MCP i subagentach w Claude Code.

Co się stało z pierwszym projektem?

Odrzucony pierwszy projekt: jasna strona z delikatną siatką, mały nagłówek i blok kontaktu w ramce
Drafting Table, pierwszy wygląd. Przechodził wszystkie testy i nikt by go nie zapamiętał.

Dlatego Claude zbudował cztery naprawdę różne kierunki jako działające strony. Polecał Orbit. Ja wybrałem Poster: brutalizm z dobrymi manierami. Płaskie nasycone kolory, twarde przesunięte cienie, kwadratowe przyciski i typografia dopasowana od krawędzi do krawędzi.

Orbit: imię i nazwisko na tle planety z cząsteczek Wybór Claude Orbit
Poster: imię i nazwisko ogromnymi literami na kobalcie Mój wybór Poster
Toybox: miękkie zabawkowe bryły 3D obok imienia Toybox
Exhibit: imię i nazwisko szeryfowym krojem na ciemnoczerwonej poświacie Exhibit
W Posterze obrazem jest sama typografia, więc projekt widać już przy pierwszym malowaniu.

Jak zmieniała się każda część i dlaczego?

Sześć części strony w kolejnych wersjach. Przeklikaj je.

Sekcja o AI

Runda 2

Runda 2: nagłówek Delegate. Verify. obok listy kontroli

Lista kontroli. Wszystko prawda i wszystko to podłoga. Sprzedawała testy, a nie mój sposób pracy.

Runda 3

Runda 3: nagłówek Delegate. Automate. nad rzędem liczników hooków, stron wiki, subagentów, serwerów MCP, skilli i lekcji

Liczniki hooków, stron i agentów. Liczby, które zmieniają się co tydzień i nic nie mówią o pracy.

Teraz

Teraz: nagłówek I run AI like a team, zespół złożony ze mnie i sześciu agentów nad siedmioma ponumerowanymi krokami; otwarty krok 5, Build, pokazuje terminal, w którym force push dostaje pieczątkę Blocked

Decyzja Pokaż, jak powstaje praca, a nie ile jej jest.

Jedna zmiana w siedmiu krokach, od mojego briefu do mojego przeglądu, każdy z małą rysowaną sceną.

Kompetencje (wcześniej Kwalifikacje)

Runda 2

Runda 2: siatka siedmiu kart z kwalifikacjami, każda z akapitem

Siedem kart, każda z akapitem. Wszystko widać, nic nie da się przeczytać na pierwszy rzut oka.

Runda 3

Runda 3: wysokie zwinięte karty z pionowymi tytułami i jedna otwarta ze zdjęciem

Boczne tytuły, które otwierają się po najechaniu. Zwięźle, ale trudno to czytać.

Teraz

Teraz: czytelna lista po lewej i otwarta po prawej karta z doświadczeniem, w której szkoła i trzy praktyki wyglądają jak bilety

Decyzja Najpierw doświadczenie, a każdy certyfikat do sprawdzenia.

Lista po lewej, jedna otwarta karta po prawej, link do sprawdzenia każdego certyfikatu.

Kontakt

Runda 2

Runda 2: Let's talk z polem e-mail, polem wiadomości i rzędem przycisków

Zwykły formularz, a każde pole to powód, żeby się zatrzymać.

Runda 3

Runda 3: Let's talk z jednym polem wiadomości i trzema tematami do wyboru

Decyzja Jak najmniej pól.

Najpierw wiadomość. Pole na odpowiedź pojawia się, gdy zaczniesz pisać.

Teraz

Teraz: Let's talk z tematami, polem wiadomości, przyciskiem Wyślij i trzema bezpośrednimi linkami

Wklej e-mail, numer telefonu albo link do LinkedIna, a pole na odpowiedź wypełni się samo. Działa też bez JavaScriptu.

Jak pracuję

Runda 2

Runda 2: Jak pracuję jako cztery ponumerowane zasady z małymi dowodami

Cztery zasady w ponumerowanych linijkach. Łatwo je napisać, łatwo przeskoczyć.

Teraz

Teraz: Product engineer, pierścień siedmiu przystanków od klienta do przeglądu i otwarty przystanek z rysowaną sceną sklepu oraz listą: cel, budżet, termin

Decyzja Opowiedz to jako historię, którą widać.

Pierścień siedmiu przystanków, każdy z rysowaną sceną i prawdziwym przykładem.

Wszystkie projekty

Telewizor

Wersja z telewizorem: nagłówek Wszystkie moje projekty NA ANTENIE obok żółtego telewizora retro z Linkoglotem, pod spodem karty projektów w jaskrawych kolorach

Telewizor retro, który przełączał projekty, i rysowana scena wszędzie tam, gdzie nie było czego nagrać. Fajne, ale za dużo tego: wyglądało na vibe coding.

Noc

Nocna wersja: nagłówek Rzeczy, które zbudowałem na tle poziomic, po prawej ponumerowana lista projektów, niżej plansze projektów przesunięte raz w lewo, raz w prawo

Jedno ciemne pole, mapa poziomic pod tytułem, plansze na przemian w lewo i w prawo i soczewka rentgenowska nad każdym zrzutem. Spokojniej, ale trudno się to czytało.

Teraz

Teraz: nagłówek Rzeczy, które zbudowałem obok przechylonej ściany kafelków z projektami na tle zrastrowanej niebiesko-różowej poświaty, pod spodem siatka kart projektów na jasnym tle

Decyzja Najpierw łatwo przejrzeć, potem efekt.

Ściana wszystkich projektów, z której skaczesz do wybranego, a pod nią zwykła siatka kart na jasnym tle. Poziomice przeszły do stopki.

Okładki bloga

Przed

Sześć starych okładek: stos kartek, dwa wykresy słupkowe, rząd pudełek, tarcza, litery A A a oraz dymki EN i PL

Kolory zależały od miejsca karty na liście, więc wpis zmieniał kolor między stronami.

Po

Sześć nowych okładek: połączone strony wiki, skala z poziomami, terminal podpięty do pomocników, przekreślone ciastko obok słupków, jedna szeroka litera między dwiema ścianami i dwa zamienione dymki

Decyzja Jedna paleta na okładkę i temat narysowany dosłownie.

Skala dla porównania, przekreślone ciastko dla analityki bez cookies. Bez słów.

Za wszystkimi sześcioma stoi jedna zasada: pokaż rzecz, utnij akapit.

Jak wyglądają pozostałe strony?

Każda strona dostaje tyle samo uwagi co strona główna, na laptopie i na telefonie.

Wszystkie projekty: nagłówek Rzeczy, które zbudowałem obok przechylonej ściany kafelków z projektami na tle zrastrowanej niebiesko-różowej poświaty Wszystkie projekty
Moje życie: napis Moje życie ogromnymi obrysowanymi literami na kolorowej plamie, obok stos zdjęć z wakacji Moje życie
Strona CV: imię i nazwisko ogromnymi literami na kobalcie, zdjęcie, rola i przycisk Pobierz PDF obok wydruku CV CV
Blog: słowo Blog ogromnymi literami na kobalcie nad wyszukiwarką i filtrami rodzaju, tematu i sortowania Blog
Wszystkie projekty, Moje życie, CV i blog w szerokości 1440 px.
Cztery ekrany telefonu obok siebie: strona główna, Wszystkie projekty, Moje życie i CV
Ta sama strona na telefonie: główna, Wszystkie projekty, Moje życie i CV. Ta sama treść, jedna kolumna.

Jakie są drobne szczegóły?

Imię wypełnia ekran bez JavaScriptu. Przy budowaniu skrypt mierzy font i liczy dokładną szerokość każdej linii, więc imię i nazwisko sięgają od krawędzi do krawędzi, zanim ruszy jakikolwiek skrypt (jak to działa).

Strona główna w trzech szerokościach obok siebie: telefon, tablet i szeroki monitor, na każdym imię i nazwisko wypełnia całą szerokość
Strona główna w szerokościach 390, 1024 i 1920 pikseli.

Telefony dostają tę samą stronę. Każdy efekt po najechaniu ma odpowiednik dotykowy (jak), a formularz kontaktowy ma własny opis, razem z błędem (formularz kontaktowy na statycznej stronie).

Dla kogo jeszcze jest ta strona?

Dla wszystkich, także dla osób, które korzystają z sieci inaczej. Strona, która działa tylko z myszką i przy idealnym wzroku, kogoś wyklucza, a ja wolę, żeby tak nie było. Dlatego:

  • Ruch, który możesz zatrzymać. Jeden przycisk „Zatrzymaj animacje” zatrzymuje wszystko, a przy włączonym ograniczeniu ruchu wszystko od razu pokazuje stan końcowy (jak to działa).
  • Klawiatura dociera wszędzie. Link „przejdź do treści” omija nagłówek, każdy efekt po najechaniu ma odpowiednik przy fokusie, a fokus nigdy nie chowa się pod przyklejonym nagłówkiem.
  • Czytnik ekranu słyszy całą historię. Ukryty tekst dodaje to, co oko widzi z kontekstu, na przykład „otwiera się w nowej karcie”, a nazwa każdego przycisku zaczyna się od słów, które na nim widać.
  • Kontrast jest testowany, nie oceniany na oko. Test jednostkowy sprawdza każdą parę kolorów, a axe przechodzi przez każdą stronę.

Skąd wyszukiwarki wiedzą, kim jestem?

Mapa strony i meta tagi to podłoga. Żeby znaleźć mnie po nazwisku, a kiedyś pokazać panel wiedzy, wyszukiwarka musi mieć pewność, o kim jest ta strona. Dlatego każda podstrona opowiada jej tę samą historię:

  • Jedna osoba, jeden identyfikator. Strona główna i CV opisują mnie w danych strukturalnych jako jedną osobę (Person): imię i nazwisko, rola, prawdziwe zdjęcie i moje profile. Każdy wpis i strona Moje życie wskazują na nią, a linki do moich profili mają rel="me".
  • Prawdziwe zdjęcia z prawdziwymi faktami. Moje życie pokazuje moje własne zdjęcia, każde z opisem, gdzie i kiedy powstało, i każde w mapie obrazów.
  • Podpisany autor. Każdy wpis to BlogPosting tej samej osoby, z ramką o autorze pod spodem, a każdy fakt z zewnątrz ma źródło z datą.
  • Stopka, która pracuje. Każda strona linkuje do projektów, CV, bloga, jego kanału RSS i moich profili.
  • Jeden adres na stronę. Jeden kanoniczny URL, wersje językowe połączone ze sobą i karta do udostępniania dla każdej strony w każdym języku.

Build się wywraca, jeśli strona zgubi tytuł, opis albo adres kanoniczny albo jeśli dane strukturalne przestaną się parsować.

Ramka o autorze pod wpisem: mój awatar, imię i nazwisko, krótkie bio i linki Więcej o mnie, CV i Kontakt O autorze
Stopka strony: kolumny Projekty, Strona z blogiem, CV, Moim życiem i RSS, Gdzie indziej z moimi profilami, strony prawne i przycisk zatrzymania animacji Stopka
Ramka o autorze pod każdym wpisem i stopka na każdej stronie: ta sama osoba i te same linki wszędzie.

Jak sprawdzam każdą zmianę?

  1. 01 Statycznie Typy, lint i testy jednostkowe.
  2. 02 Przeglądarki Playwright na każdej stronie, z axe do dostępności.
  3. 03 Oczy Zrzuty ekranu w szerokościach telefonu, tabletu i komputera, które oglądam sam.
  4. 04 Szybkość Lighthouse na wolnym telefonie.
Wszystko, co nie przejdzie, staje się poprawką, a powtarzający się błąd lekcją w wiki.

Nic nie jest gotowe, dopóki testy nie przechodzą i dopóki sam nie obejrzę zrzutów.

Z czego jest zbudowana?

Część Narzędzie
Framework Astro 7 (dlaczego nie Next.js)
Język i style TypeScript, Tailwind CSS 4
Tłumaczenia Lingui
Repozytorium Turborepo i bun
Font Anybody, zmienny font (OFL)
Ikony Tabler (MIT) i Simple Icons (CC0)
Hosting Vercel
Formularz kontaktowy EmailJS za funkcją Vercel, Cloudflare Turnstile
Analityka Umami Cloud, bez cookies
Testy Playwright, axe-core, Vitest, Lighthouse
AI Claude Code

Gdzie to wylądowało?

Raport Lighthouse dla strony głównej na telefonie: cztery zielone wskaźniki dla Performance, Accessibility, Best Practices i SEO
Strona główna w Lighthouse na telefonie, lokalny build produkcyjny z 7 października 2026. To liczby z laboratorium: dane od prawdziwych użytkowników pojawią się po starcie.

Jeśli chcesz porozmawiać o podobnym projekcie albo o pracy, mój formularz kontaktowy to jedna wiadomość.

Źródła

  1. llm-wiki.md, plik z pomysłem Andreja Karpathy'ego (GitHub Gist, 4 kwietnia 2026) (otwiera się w nowej karcie) (dostęp: )
  2. Lighthouse performance scoring (Chrome for Developers) (otwiera się w nowej karcie) (dostęp: )
  3. Understanding Success Criterion 2.2.2: Pause, Stop, Hide (W3C) (otwiera się w nowej karcie) (dostęp: )
  4. Awwwards, Sites of the Day (otwiera się w nowej karcie) (dostęp: )
  5. Mobbin, biblioteka prawdziwych ekranów aplikacji i stron (otwiera się w nowej karcie) (dostęp: )
  6. Playwright (otwiera się w nowej karcie) (dostęp: )
  7. axe-core, silnik reguł dostępności (Deque) (otwiera się w nowej karcie) (dostęp: )
  8. Solar System Scope, tekstury planet (CC BY 4.0) użyte w starym kosmicznym portfolio (otwiera się w nowej karcie) (dostęp: )
  9. Anybody, zmienny font (Google Fonts) (otwiera się w nowej karcie) (dostęp: )

Wszystkie wpisy