Osobní web petrvobornik.cz

0× zobrazeno vlastní projekt

Osobní web a online CV postavený na míru v ASP.NET Core (.NET 10) jako náhrada za dosavadní Joomlu – s kompletně převzatým obsahem, novým designem, vlastní administrací na míru a rozhraním pro správu obsahu i přes AI (MCP).

Původní web běžel od roku 2013 na Joomle 3. Když ho v říjnu 2026 ohrozila chyba PHP a ukázalo se, že přechod na novou verzi Joomly by byl skoro složitější než postavit web nový, padlo rozhodnutí: nový web na míru v .NET, bez kompromisů v soukromí návštěvníků a se správou, která sedí přesně tomu, co na webu je.

Nový web

Projekt začal 23. 10. 2026 v jednu ráno konzultací s AI - rozborem starého webu, volbou technologií a plánem migrace. Samotný vývoj pak probíhal s Claude Code po menších krocích: každý bod roadmapy = build, testy a kontrola změn před commitem. Web běží na vlastním serveru (Windows Server, IIS) a další vývoj pokračuje dle potřeby.

Co web umí

Převzatý obsah

Všechny články, projekty, série videí a 87 publikací z Joomly včetně obrázků, štítků a počtů zobrazení, které se počítají dál.

Staré odkazy fungují

284 přesměrování a pravidla podle Joomla ID - staré adresy vedou přes 301 na nové, každá 404 se zaloguje.

Nový design

Směr „Inženýrský zápisník“ vybraný z několika návrhů, světlý i tmavý režim, responzivní a přístupný.

Bez cookie lišty

Návštěvník nedostane žádnou cookie. Videa, tweety i mapy se zobrazují jako lokální náhled a cizí obsah se načte až po kliknutí.

Administrace všeho

Obsah, kategorie, štítky, vazby, menu, soubory s úpravou obrázků, přesměrování, 404 i zálohy.

Správa přes AI

MCP rozhraní, přes které AI asistent může číst a upravovat obsah. S právy klíče, auditem a historií verzí.

Časová osa vývoje nového webu od konzultace 23. 10. 2026 po zapojení AI přes MCP 28. 10. 2026

Migrace obsahu

Obsah se z databáze Joomly vyexportoval jednorázovým skriptem do JSON a pak opakovatelně (idempotentně) importoval do nové databáze. Přešlo 22 článků blogu, 11 projektů, 12 sérií videí, 87 publikací a samostatné stránky: celkem 134 položek a 671 452 zobrazení. Dlouhé články se dělí na části stejně jako dřív, 243 souborů se přesunulo do nového úložiště (i se starými adresami obrázků) a u publikací zůstalo ručně nastavené datum vydání i původní citace.

Aby nic nezmizelo z vyhledávačů, každá stará adresa - články, kategorie, index.php?…&id=N, stránkování i obrázky - vede trvalým přesměrováním na nové místo. Změna adresy v adminu založí další přesměrování automaticky.

Design a soukromí

Vzhled vznikl z několika návrhů, vybrán a roladěn (ručně i prompty) byl čistý technický směr s monospace popisky ve stylu komentářů v kódu. Světlý a tmavý režim se řídí nastavením systému a jde přepnout ručně, písma se hostují lokálně, kód má vlastní zvýraznění syntaxe a bloky obsahu (sloupce, karty, zvýrazněné boxy, galerie) nahrazují Bootstrap.

Web nepotřebuje cookie lištu: žádná analytika třetích stran, YouTube jako lokální náhled s přehráním až po kliknutí, příspěvky z X jako lokální kopie, mapy OrgPadu jako snímek. Zobrazení se počítají bez cookies, bez ukládání IP adres a s filtrováním robotů.

Administrace

Administrace vznikala postupně podle toho, co bylo právě potřeba. Dnes zvládá:

  • obsah – články, stránky s podstránkami, projekty, série videí a publikace; vizuální editor i editor kódu, vlastní CSS u článku, naplánované zveřejnění, archiv (410 nebo 301) a trvalé smazání s přehledem dopadů,
  • kategorie a štítky – řazení přetažením, přejmenování a slučování s přesměrováním,
  • propojení – vazby mezi projekty, články, videi a publikacemi a odkazy na obsah podle ID, které přežijí změnu adresy,
  • soubory – úložiště s deduplikací, evidencí použití, košem, nahráním z adresy, ořezem, otočením a zmenšením obrázků do WebP,
  • menu, přesměrování a log 404,
  • zálohy – týdenní plné a denní přírůstkové komprimované zálohy, snímky databáze a návod k obnově vygenerovaný pro konkrétní zálohu,
  • bezpečnost – jediný účet bez registrace, dvoufázové ověření, omezení pokusů o přihlášení, CSP.

Přihlášený správce navíc vidí přímo na webu lištu s odkazem na úpravu právě zobrazeného obsahu.

Schéma nového webu: návštěvník, administrace a AI asistent přes MCP vstupují do aplikace ASP.NET Core, která ukládá data do SQLite a úložiště souborů se zálohami

Správa obsahu přes AI (MCP)

Posledním kusem je rozhraní MCP (Model Context Protocol), přes které může AI asistent obsah webu číst, vytvářet koncepty, upravovat a nahrávat obrázky. Každý klíč má přesně nastavená práva i platnost, každé volání se zapisuje do auditu a před každou úpravou se uloží předchozí verze, kterou jde jedním kliknutím vrátit. AI přitom prochází stejnými kontrolami jako administrace.

Hned první den v provozu se přes MCP doplnily ikony článků bez obrázku, štítky u zhruba stovky článků, projektů, videí a publikací (včetně nových témat) a vazby mezi souvisejícím obsahem – a jako koncept vznikl i základ této stránky.

Technologie

  • .NET 10 (LTS), ASP.NET Core Razor Pages, C#
  • EF Core 10 + SQLite (poskytovatele jde konfigurací vyměnit za SQL Server či PostgreSQL)
  • ASP.NET Core Identity s 2FA, Serilog, HtmlSanitizer
  • TinyMCE, CodeMirror, Prism, Tabler Icons – vše hostované lokálně
  • MCP server (ModelContextProtocol.AspNetCore)
  • IIS 10 na Windows Serveru, přes 240 automatických testů (xUnit)

Co dál

Další fáze se věnuje webu jako vizitce: nová úvodní stránka, životopis, časová osa aktivit, fulltextové hledání, strukturovaná data pro vyhledávače a později i anglická verze.

// související
// video

Weby

Tvorba webových stránek „from ZERO to full-stack HERO“, tedy od úplných základů, přes pomocné frameworky, až po webové aplikace s vlastním backendem, databází a správou uživatelů, ale i moderní…

728× zobrazeno

Připravil jsem sérii videí zaměřenou na webový vývoj, která vás provede od základů až po tvorbu komplexních webových aplikací. Obsah zahrnuje práci s frameworky, backendem, databázemi i moderním…

1 885× zobrazeno

// projekt

Cronos Web

Spolupráce na vývoji frameworku Cronos Web .

3 006× zobrazeno

// projekt

TransSysCare

System pro aukci spedičních zakázek.

18 714× zobrazeno