Kontext
Chtěl jsem mít jedno místo, které ukazuje, na čem pracuju, a které si můžu celé řídit sám. Ne portfolio šablonu, ale web, kde je obsah součástí repozitáře a mění se stejnou cestou jako kód — přes pull request.
Z toho plyne skoro všechno ostatní: žádná databáze, žádná administrace, žádný krok, který by nešel udělat v gitu.
Jak je postavený
Astro, staticky, bez jakékoli další závislosti. Obsah jsou Markdown soubory rozdělené do content kolekcí — profil, projekty, články, deník — a každá kolekce má schéma, takže chybějící nebo překlepnuté pole shodí build, ne až stránku.
Sekci jde schovat, aniž by se smazala. Writing je dnes za feature flagem: zmizela z navigace, z úvodní stránky i ze sitemapy, ale routy i texty se dál buildí. Vrátit ji je jeden řádek.
Dvojjazyčnost bez databáze
Kořen webu je jazykový rozcestník; obě jazykové verze mají stejné stránky.
Čeština a angličtina nejsou dvě větve obsahu, ale kolekce a její překlad. Anglický soubor je zdroj, český překlad leží pod stejným slugem v *-translations/cs/. Text bez překladu se vykreslí anglicky, takže nikdy nevznikne prázdná stránka a překlad může zaostávat, aniž by se něco rozbilo. Zbytek rozdílu nesou lokalizované komponenty, ne duplikované stránky.
Deník
Deník je jediná část webu, která je spíš systém než stránka. Pravidlo je jeden den, jeden projekt, jeden záznam — práce na jednom projektu nikdy nejde do záznamu o jiném.
Každý záznam nese odznak projektu; když ten projekt má vlastní stránku, jde na ni kliknout, a když nemá, je odznak vizuálně odlišený a mrtvý. Projekt odkazuje opačným směrem, do deníku předfiltrovaného na sebe. Přehled se filtruje podle typu záznamu i podle projektu.
Technický stav
Statický build nasazený na Vercelu, na doméně sijanov.com. Kód zvýrazňuje Shiki, web má RSS a sitemapu.
Motiv si čtenář přepíná sám a volba se pamatuje; než ji udělá, web se řídí nastavením systému. Prvky se při scrollu vynořují, ale ne tomu, kdo má animace vypnuté.
Struktura stojí a mění se po kouscích, když se ukáže, že něco nesedí. Přibývá hlavně obsah.