[{"data":1,"prerenderedAt":1263},["ShallowReactive",2],{"blog-all":3},[4,164,391,630,938,1150],{"id":5,"title":6,"author":7,"body":8,"category":153,"cover":154,"date":155,"description":156,"extension":157,"meta":158,"navigation":159,"path":160,"published":159,"seo":161,"stem":162,"__hash__":163},"blog\u002Fblog\u002Fai-a-tvorba-obsahu.md","AI a tvorba obsahu — partner, nie náhrada","Tomáš Renčík",{"type":9,"value":10,"toc":134},"minimark",[11,20,23,28,33,36,39,43,46,50,53,57,60,64,68,71,75,78,82,85,89,92,95,98,102,105,121,124,128,131],[12,13,14,15,19],"p",{},"Generatívna AI zmenila spôsob, akým pracujeme s textom. Ale presne ",[16,17,18],"em",{},"ako"," ju používame — a ako by sme ju nemali používať — je stále vec, na ktorú si každý musí prísť sám.",[12,21,22],{},"Tu sú naše skúsenosti z budovania Modulo CMS a písania jeho obsahu.",[24,25,27],"h2",{"id":26},"kde-ai-skutočne-pomáha","Kde AI skutočne pomáha",[29,30,32],"h3",{"id":31},"_1-prvý-návrh-štruktúry","1. Prvý návrh štruktúry",[12,34,35],{},"Najhoršia časť písania nie je samotné písanie — je to prázdna stránka. AI vie rýchlo navrhnúť osnovu článku. Nie výsledný text, len štruktúru.",[12,37,38],{},"\"Napíš mi osnovu článku o headless CMS pre malé firmy\" → dostanete 5-7 bodov. Tri zahodíte, dva upravíte, jeden vás inšpiruje na myšlienku, na ktorú by ste nepríšli sami.",[29,40,42],{"id":41},"_2-technická-dokumentácia","2. Technická dokumentácia",[12,44,45],{},"Dokumentácia API endpointov, popis parametrov, príklady requests\u002Fresponses — toto je obsah, ktorý AI zvláda dobre. Je faktický, štruktúrovaný, bez potreby \"hlasu\".",[29,47,49],{"id":48},"_3-revízia-a-korektúry","3. Revízia a korektúry",[12,51,52],{},"AI vie nájsť gramatické chyby, navrhnúť lepšie formulácie, skrátiť príliš dlhé vety. Ako korektorský asistent je vynikajúca.",[29,54,56],{"id":55},"_4-preklady-pre-testovanie","4. Preklady pre testovanie",[12,58,59],{},"Rýchly preklad do angličtiny pre kontrolu, či text dáva zmysel aj v inej kultúre. Nie produkčný preklad — len kontrola.",[24,61,63],{"id":62},"kde-ai-škodí","Kde AI škodí",[29,65,67],{"id":66},"_1-originálny-hlas","1. Originálny hlas",[12,69,70],{},"AI text znie... ako AI. Je korektný, plynulý, ale bez osobnosti. Ak chcete, aby váš blog znel ako vy — vaše skúsenosti, váš humor, vaše postoje — AI vám nepomôže. Buď píšete sami, alebo stratíte hlas.",[29,72,74],{"id":73},"_2-fakty-a-čísla","2. Fakty a čísla",[12,76,77],{},"AI halucinuje. Nie vždy, ale dosť často na to, aby každý fakt musel byť overený. Pre marketing (kde nezáleží na presnosti) to môže stačiť. Pre technické články je to problém.",[29,79,81],{"id":80},"_3-seo-long-tail-obsah","3. SEO long-tail obsah",[12,83,84],{},"Ak generujete obsah iba pre Google bez reálnej hodnoty pre čitateľa, krátkodbodo to môže fungovať. Dlhodobo — Google sa učí a obsah bez hodnoty klesá.",[24,86,88],{"id":87},"naša-filozofia","Naša filozofia",[12,90,91],{},"V Modulo CMS píšeme texty sami. AI používame ako nástroj v procese, nie ako generátor obsahu.",[12,93,94],{},"Konkrétne: prvý draft je vždy náš. AI potom pomáha s korekturou, navrhne alternatívne formulácie pre niektoré vety, skontroluje logiku článku. Výsledok je vždy prečítaný a upravený ľudským okom.",[12,96,97],{},"Prečo? Pretože naši čitatelia sú vývojári a podnikatelia, ktorí si cenia úprimnosť. Generický AI obsah spoznajú okamžite.",[24,99,101],{"id":100},"integrácia-ai-do-cms-čo-plánujeme","Integrácia AI do CMS — čo plánujeme",[12,103,104],{},"Do budúcej verzie Modulo CMS plánujeme AI asistenta priamo v editore. Nie na generovanie článkov, ale na:",[106,107,108,112,115,118],"ul",{},[109,110,111],"li",{},"Návrh meta description na základe textu",[109,113,114],{},"Kontrola čitateľnosti (priemerná dĺžka vety, komplexnosť)",[109,116,117],{},"Návrh interných odkazov medzi článkami",[109,119,120],{},"Automatické tagrovanie kategórie",[12,122,123],{},"Toto sú funkcie, kde AI skutočne šetrí čas bez toho, aby nahrádzala ľudskú tvorbu.",[24,125,127],{"id":126},"záver","Záver",[12,129,130],{},"AI je nástroj. Ako kladivo — môžete ním postaviť dom, ale aj si trafiť po prstoch. Otázka nie je \"používať alebo nepoužívať\", ale \"kde a ako\".",[12,132,133],{},"Pre tvorbu obsahu: používajte AI na štruktúru, korekcie a technické texty. Váš hlas a vaše skúsenosti — to AI nenahradí.",{"title":135,"searchDepth":136,"depth":136,"links":137},"",2,[138,145,150,151,152],{"id":26,"depth":136,"text":27,"children":139},[140,142,143,144],{"id":31,"depth":141,"text":32},3,{"id":41,"depth":141,"text":42},{"id":48,"depth":141,"text":49},{"id":55,"depth":141,"text":56},{"id":62,"depth":136,"text":63,"children":146},[147,148,149],{"id":66,"depth":141,"text":67},{"id":73,"depth":141,"text":74},{"id":80,"depth":141,"text":81},{"id":87,"depth":136,"text":88},{"id":100,"depth":136,"text":101},{"id":126,"depth":136,"text":127},"tech","\u002Fblog\u002Fai-a-tvorba-obsahu\u002Fcover.webp","2026-06-19","Kde konkrétne pomáha AI pri tvorbe webového obsahu? A kde si škodí? Praktické skúsenosti z projektu Modulo CMS.","md",{},true,"\u002Fblog\u002Fai-a-tvorba-obsahu",{"title":6,"description":156},"blog\u002Fai-a-tvorba-obsahu","9QMqZWw4OGjdlWiN1ozY_4CmVZeqFSBP5oMXqOPzKeE",{"id":165,"title":166,"author":7,"body":167,"category":382,"cover":383,"date":384,"description":385,"extension":157,"meta":386,"navigation":159,"path":387,"published":159,"seo":388,"stem":389,"__hash__":390},"blog\u002Fblog\u002Fmoderny-web-pre-malu-firmu.md","Moderný web pre malú firmu — kde začať a čo skutočne potrebujete",{"type":9,"value":168,"toc":374},[169,172,175,179,182,210,213,217,220,223,226,230,233,238,252,257,268,272,275,342,345,349,352,358,361,365],[12,170,171],{},"\"Potrebujeme web.\" Táto veta odštartuje tisíce projektov ročne. A veľa z nich skončí rovnako: predražená agentúra, hotovo za 6 mesiacov, web vyzerá dobre, ale nikto ho nevie aktualizovať.",[12,173,174],{},"Existuje lepší spôsob.",[24,176,178],{"id":177},"čo-malá-firma-od-webu-skutočne-chce","Čo malá firma od webu skutočne chce",[12,180,181],{},"Predtým ako hovoríme o technológii, treba byť jasný v cieľoch:",[183,184,185,192,198,204],"ol",{},[109,186,187,191],{},[188,189,190],"strong",{},"Nájditeľnosť"," — Google ma nájde",[109,193,194,197],{},[188,195,196],{},"Dôveryhodnosť"," — vyzerám seriózne",[109,199,200,203],{},[188,201,202],{},"Konverzia"," — návštevník sa stane zákazníkom",[109,205,206,209],{},[188,207,208],{},"Aktualizovateľnosť"," — viem zmeniť cenu bez volania programátorovi",[12,211,212],{},"Väčšina riešení sa sústredí na body 1-3, ale zabúda na 4. A to je problém.",[24,214,216],{"id":215},"prečo-je-aktualizovateľnosť-kľúčová","Prečo je aktualizovateľnosť kľúčová",[12,218,219],{},"Predstavte si, že zmeníte otváraciu dobu alebo ceny. Zavoláte agentúre? Počkáte 3 dni a zaplatíte 50€? Alebo to spravíte sami za 2 minúty?",[12,221,222],{},"CMS systém (Content Management System) existuje práve preto, aby bola druhá možnosť dostupná každému.",[12,224,225],{},"Ale pozor — nie každý CMS je rovnaký. WordPress vyžaduje stály server, zálohy, aktualizácie pluginov, bezpečnostné záplaty. Je to práca sama o sebe.",[24,227,229],{"id":228},"headless-cms-pre-malú-firmu-dáva-to-zmysel","Headless CMS pre malú firmu — dáva to zmysel?",[12,231,232],{},"Headless CMS bol dlho doménou veľkých projektov. Ale Modulo CMS mení toto pravidlo.",[12,234,235],{},[188,236,237],{},"Čo dostanete:",[106,239,240,243,246,249],{},[109,241,242],{},"Admin panel pre správu obsahu (blog, jedálny lístok, nehnuteľnosti...)",[109,244,245],{},"Rýchly verejný web bez databázy",[109,247,248],{},"Žiadne mesačné licenčné poplatky za CMS",[109,250,251],{},"Obsah v Markdown — prenositeľný, zálohovateľný",[12,253,254],{},[188,255,256],{},"Čo musíte riešiť:",[106,258,259,262,265],{},[109,260,261],{},"Hosting (Cloudflare Pages — zadarmo pre malé projekty)",[109,263,264],{},"Doménu (~10€\u002Frok)",[109,266,267],{},"Počiatočný setup (tu pomôžeme my)",[24,269,271],{"id":270},"koľko-to-stojí","Koľko to stojí?",[12,273,274],{},"Toto je závisí od rozsahu, ale orientačne:",[276,277,278,294],"table",{},[279,280,281],"thead",{},[282,283,284,288,291],"tr",{},[285,286,287],"th",{},"Typ projektu",[285,289,290],{},"Riešenie",[285,292,293],{},"Náklady",[295,296,297,309,320,331],"tbody",{},[282,298,299,303,306],{},[300,301,302],"td",{},"Vizitka + kontakt",[300,304,305],{},"Statická stránka",[300,307,308],{},"~500€ jednorazovo",[282,310,311,314,317],{},[300,312,313],{},"Blog + o nás",[300,315,316],{},"Modulo CMS blog modul",[300,318,319],{},"~800-1200€ jednorazovo",[282,321,322,325,328],{},[300,323,324],{},"Reštaurácia + jedálny lístok",[300,326,327],{},"Modulo CMS food modul",[300,329,330],{},"~1000-1500€",[282,332,333,336,339],{},[300,334,335],{},"Realitná kancelária",[300,337,338],{},"Modulo CMS reality modul",[300,340,341],{},"~1200-2000€",[12,343,344],{},"Bez mesačných poplatkov za CMS. Hosting na Cloudflare Pages je zdarma pre bežnú návštevnosť.",[24,346,348],{"id":347},"čo-neriešiť-hneď","Čo neriešiť hneď",[12,350,351],{},"Nové firmy chcú mať všetko: shop, rezervačný systém, blog, newsletter, chatbot... Toto je pasca.",[12,353,354,357],{},[188,355,356],{},"Začnite s minimom, ktoré funguje."," Pridajte funkcie podľa toho, čo skutočne potrebujú zákazníci — nie podľa toho, čo si myslíte, že budú chcieť.",[12,359,360],{},"Modulo CMS je modulárny práve preto — pridáte modul keď ho naozaj potrebujete.",[24,362,364],{"id":363},"prvý-krok","Prvý krok",[12,366,367,368,373],{},"Ak premýšľate o webe pre vašu firmu a chcete sa porozprávať o možnostiach, napíšte na ",[369,370,372],"a",{"href":371},"mailto:info@modulocms.sk","info@modulocms.sk",". Prvá konzultácia je zadarmo.",{"title":135,"searchDepth":136,"depth":136,"links":375},[376,377,378,379,380,381],{"id":177,"depth":136,"text":178},{"id":215,"depth":136,"text":216},{"id":228,"depth":136,"text":229},{"id":270,"depth":136,"text":271},{"id":347,"depth":136,"text":348},{"id":363,"depth":136,"text":364},"podnikanie","\u002Fblog\u002Fmoderny-web-pre-malu-firmu\u002Fcover.webp","2026-06-12","Malá firma nepotrebuje enterprise riešenie. Ale potrebuje profesionálny web, ktorý rastie spolu s ňou a nepohltí celý marketingový budget.",{},"\u002Fblog\u002Fmoderny-web-pre-malu-firmu",{"title":166,"description":385},"blog\u002Fmoderny-web-pre-malu-firmu","rjUyDh7ISo6D7EiGFSDnZNF6OjPJtM6m7kU03fbBfZM",{"id":392,"title":393,"author":7,"body":394,"category":621,"cover":622,"date":623,"description":624,"extension":157,"meta":625,"navigation":159,"path":626,"published":159,"seo":627,"stem":628,"__hash__":629},"blog\u002Fblog\u002Fdizajn-system-pre-web.md","Dizajn systém — prečo si nastaviť pravidlá skôr, ako začnete kódovať",{"type":9,"value":395,"toc":612},[396,399,402,406,409,412,418,489,498,504,510,514,525,531,535,538,545,549,552,555,559,562,565,591,595,598,602,605,608],[12,397,398],{},"Predstavte si web, kde každé tlačidlo vyzerá trochu inak. Jeden má zaoblené rohy, druhý ostré. Jeden je modrý, druhý námornícky. Jeden má tieň, druhý nie.",[12,400,401],{},"Toto nie je hypotéza — je to realita väčšiny webov, ktoré sa vyvíjajú bez systému.",[24,403,405],{"id":404},"čo-je-dizajn-systém","Čo je dizajn systém?",[12,407,408],{},"Dizajn systém je zbierka pravidiel, komponentov a štýlov, ktoré definujú vizuálny jazyk projektu. Môže byť jednoduchý (niekoľko CSS premenných a typografia) alebo komplexný (plnohodnotná komponentová knižnica s dokumentáciou).",[12,410,411],{},"Pre Modulo CMS sme zvolili stredný prístup:",[12,413,414,417],{},[188,415,416],{},"Farby"," ako CSS premenné:",[419,420,424],"pre",{"className":421,"code":422,"language":423,"meta":135,"style":135},"language-css shiki shiki-themes github-light github-dark","--c-primary: #6366f1;    \u002F* indigo *\u002F\n--c-accent:  #a855f7;    \u002F* fialová *\u002F\n--c-text:    #09090b;    \n--c-muted:   #71717a;    \n--c-border:  #e4e4e7;    \n","css",[425,426,427,447,458,469,480],"code",{"__ignoreMap":135},[428,429,432,436,440,443],"span",{"class":430,"line":431},"line",1,[428,433,435],{"class":434},"sVt8B","--c-primary: ",[428,437,439],{"class":438},"s7hpK","#6366f1",[428,441,442],{"class":434},";    ",[428,444,446],{"class":445},"sJ8bj","\u002F* indigo *\u002F\n",[428,448,449,452,455],{"class":430,"line":136},[428,450,451],{"class":434},"--c-accent:  ",[428,453,454],{"class":438},"#a855f7;",[428,456,457],{"class":445},"    \u002F* fialová *\u002F\n",[428,459,460,463,466],{"class":430,"line":141},[428,461,462],{"class":434},"--c-text:    ",[428,464,465],{"class":438},"#09090b",[428,467,468],{"class":434},";    \n",[428,470,472,475,478],{"class":430,"line":471},4,[428,473,474],{"class":434},"--c-muted:   ",[428,476,477],{"class":438},"#71717a",[428,479,468],{"class":434},[428,481,483,486],{"class":430,"line":482},5,[428,484,485],{"class":434},"--c-border:  ",[428,487,488],{"class":438},"#e4e4e7;\n",[12,490,491,494,495],{},[188,492,493],{},"Zaoblenie"," konzistentné: ",[425,496,497],{},"--radius: 12px",[12,499,500,503],{},[188,501,502],{},"Typografia",": Inter, system-ui, sans-serif — bez externých fontov pre rýchlosť",[12,505,506,509],{},[188,507,508],{},"Tiene",": len kde treba, vždy rovnaký pattern",[24,511,513],{"id":512},"prečo-to-ušetrí-čas","Prečo to ušetrí čas",[12,515,516,517,520,521,524],{},"Keď máte dizajn systém, každé rozhodnutie o dizajne je otázkou \"použijem ",[425,518,519],{},"--c-primary"," alebo ",[425,522,523],{},"--c-accent","?\" nie \"aká modrá to bola?\"",[12,526,527,528,530],{},"Pri zmene brandovej farby stačí zmeniť jeden riadok CSS a zmena sa prejaví všade. Bez systému by ste hľadali ",[425,529,439],{}," po celom codebase.",[24,532,534],{"id":533},"komponentová-knižnica-v-admin-paneli","Komponentová knižnica v admin paneli",[12,536,537],{},"Pre admin panel používame Vuetify 3 — kompletný dizajn systém pre Vue 3. Vuetify má stovky komponentov: tabuľky, formuláre, dialógy, navigácia. Všetky sú tematizovateľné — môžete zmeniť tému a celý admin sa prispôsobí.",[12,539,540,541,544],{},"Toto je sila komponentovej knižnice: ",[188,542,543],{},"nemusíte vymýšľať koleso",". Sústredíte sa na funkcionalitu, nie na štylizáciu každého tlačidla.",[24,546,548],{"id":547},"verejný-web-vlastné-css","Verejný web: vlastné CSS",[12,550,551],{},"Verejný web Modulo CMS používa čisté CSS s premennými. Žiadny framework, žiadna externá závislosť. Dôvod: verejný web musí byť rýchly a ľahký. Tailwind, Bootstrap aj Vuetify pridávajú kilobajty, ktoré návštevník musí stiahnuť.",[12,553,554],{},"S CSS premennými dosiahneme konzistenciu bez záťaže.",[24,556,558],{"id":557},"typografia-základ-ktorý-sa-prehliadne","Typografia: základ, ktorý sa prehliadne",[12,560,561],{},"Väčšina webov sa príliš sústredí na farby a zabudne na typografiu. Pritom 90% webu je text.",[12,563,564],{},"Naše pravidlá:",[106,566,567,574,581,588],{},[109,568,569,570,573],{},"Nadpis H1: ",[425,571,572],{},"clamp(1.75rem, 4vw, 2.5rem)"," — responzívne bez media queries",[109,575,576,577,580],{},"Line-height pre text: ",[425,578,579],{},"1.8"," — priestor pre pohodlné čítanie",[109,582,583,584,587],{},"Letter-spacing pre nadpisy: ",[425,585,586],{},"-0.04em"," — tesnejšie, modernejšie",[109,589,590],{},"Font-weight: 900 pre nadpisy, 500 pre text, 700 pre labely",[24,592,594],{"id":593},"spacing-ôsma-sústava","Spacing: ôsma sústava",[12,596,597],{},"Všetky medzery sú násobkami 8px: 8, 16, 24, 32, 48, 64. Nikdy 7, 9 alebo 13. Toto robí dizajn rytmický a konzistentný, aj keď na to nikto priamo nepozrie.",[24,599,601],{"id":600},"záver-systém-pred-kódom","Záver: systém pred kódom",[12,603,604],{},"Ak začínate nový projekt, investujte prvé hodiny do definovania systému: farby, fonty, spacing, zaoblenie, tiene. Tieto rozhodnutia ušetria dni práce neskôr.",[12,606,607],{},"V Modulo CMS je dizajn systém súčasťou projektu od prvého commitu. Keď pridávame nový modul, nová stránka vyzerá konzistentne — bez extra práce.",[609,610,611],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":135,"searchDepth":136,"depth":136,"links":613},[614,615,616,617,618,619,620],{"id":404,"depth":136,"text":405},{"id":512,"depth":136,"text":513},{"id":533,"depth":136,"text":534},{"id":547,"depth":136,"text":548},{"id":557,"depth":136,"text":558},{"id":593,"depth":136,"text":594},{"id":600,"depth":136,"text":601},"dizajn","\u002Fblog\u002Fdizajn-system-pre-web\u002Fcover.webp","2026-06-04","Konzistentný dizajn nie je náhoda. Je to systém. Ako sme pristupovali k vizuálnej konzistencii v Modulo CMS a prečo to ušetrilo stovky hodín.",{},"\u002Fblog\u002Fdizajn-system-pre-web",{"title":393,"description":624},"blog\u002Fdizajn-system-pre-web","jdYA4TCiNRloNsP2jDXJnedVh042DNTDG9fWZC-gz0Y",{"id":631,"title":632,"author":7,"body":633,"category":153,"cover":930,"date":931,"description":932,"extension":157,"meta":933,"navigation":159,"path":934,"published":159,"seo":935,"stem":936,"__hash__":937},"blog\u002Fblog\u002Fnuxt-3-pre-moderny-web.md","Nuxt 3 — prečo je naša voľba pre moderný web",{"type":9,"value":634,"toc":922},[635,638,642,645,665,668,672,675,681,687,693,699,702,706,724,884,891,895,898,901,905,908,911,913,916,919],[12,636,637],{},"Keď sme vyberali technológiu pre Modulo CMS, chceli sme niečo, čo bude rýchle, moderné a zároveň dostatočne flexibilné pre rôzne typy projektov. Nuxt 3 bol jasná voľba.",[24,639,641],{"id":640},"čo-je-nuxt-3","Čo je Nuxt 3?",[12,643,644],{},"Nuxt je framework postavený na Vue 3, ktorý rieši všetky \"nudné\" veci okolo fullstack webového projektu:",[106,646,647,650,653,656,659,662],{},[109,648,649],{},"Server-side rendering (SSR)",[109,651,652],{},"Statická generácia (SSG)",[109,654,655],{},"File-based routing",[109,657,658],{},"Auto-import komponentov a composables",[109,660,661],{},"API routes zabudované priamo v projekte",[109,663,664],{},"TypeScript podpora out-of-the-box",[12,666,667],{},"Vo svete Nuxt 3 nemusíte konfigurovať webpack, babel, typescript ani routing ručne. Všetko funguje od prvého príkazu.",[24,669,671],{"id":670},"rendering-modes-prečo-na-tom-záleží","Rendering modes — prečo na tom záleží",[12,673,674],{},"Toto je možno najdôležitejší aspekt moderného web developmentu, o ktorom sa hovorí menej, ako by malo.",[12,676,677,680],{},[188,678,679],{},"CSR (Client-Side Rendering)"," — stránka sa vyrenderuje v prehliadači. Rýchly prvý byte, pomalé zobrazenie obsahu. Problém pre SEO.",[12,682,683,686],{},[188,684,685],{},"SSR (Server-Side Rendering)"," — server vyrenderuje HTML a pošle ho prehliadaču. Dobré pre SEO, ale vyžaduje bežiaci server.",[12,688,689,692],{},[188,690,691],{},"SSG (Static Site Generation)"," — stránky sa vygenerujú pri builde. Ultrarychlé, extrémne jednoduché hostovanie. Obmedzenie: obsah sa aktualizuje len pri novom builde.",[12,694,695,698],{},[188,696,697],{},"Hybrid rendering"," — každá route má vlastný rendering mode. Toto je to, čo robí Nuxt 3 výnimočným.",[12,700,701],{},"V Modulo CMS používame hybridný prístup: verejný web je prevažne staticky generovaný (rýchlosť + SEO), ale API endpointy a admin panel fungujú v SSR mode.",[24,703,705],{"id":704},"vue-3-a-composition-api","Vue 3 a Composition API",[12,707,708,709,712,713,712,716,719,720,723],{},"Vue 3 s Composition API zmenilo spôsob, akým píšeme komponenty. Miesto rozsypaných options (",[425,710,711],{},"data",", ",[425,714,715],{},"methods",[425,717,718],{},"computed",") je logika organizovaná do ",[425,721,722],{},"composables"," — malých, znovupoužiteľných funkcií.",[419,725,729],{"className":726,"code":727,"language":728,"meta":135,"style":135},"language-typescript shiki shiki-themes github-light github-dark","\u002F\u002F composables\u002FuseBlogPosts.ts\nexport function useBlogPosts() {\n  const posts = ref\u003CPost[]>([])\n  const loading = ref(true)\n  \n  async function fetchPosts() {\n    loading.value = true\n    posts.value = await $fetch('\u002Fapi\u002Fblog')\n    loading.value = false\n  }\n  \n  return { posts, loading, fetchPosts }\n}\n","typescript",[425,730,731,736,752,776,796,801,814,826,848,858,864,869,878],{"__ignoreMap":135},[428,732,733],{"class":430,"line":431},[428,734,735],{"class":445},"\u002F\u002F composables\u002FuseBlogPosts.ts\n",[428,737,738,742,745,749],{"class":430,"line":136},[428,739,741],{"class":740},"szBVR","export",[428,743,744],{"class":740}," function",[428,746,748],{"class":747},"sScJk"," useBlogPosts",[428,750,751],{"class":434},"() {\n",[428,753,754,757,761,764,767,770,773],{"class":430,"line":141},[428,755,756],{"class":740},"  const",[428,758,760],{"class":759},"sj4cs"," posts",[428,762,763],{"class":740}," =",[428,765,766],{"class":747}," ref",[428,768,769],{"class":434},"\u003C",[428,771,772],{"class":747},"Post",[428,774,775],{"class":434},"[]>([])\n",[428,777,778,780,783,785,787,790,793],{"class":430,"line":471},[428,779,756],{"class":740},[428,781,782],{"class":759}," loading",[428,784,763],{"class":740},[428,786,766],{"class":747},[428,788,789],{"class":434},"(",[428,791,792],{"class":759},"true",[428,794,795],{"class":434},")\n",[428,797,798],{"class":430,"line":482},[428,799,800],{"class":434},"  \n",[428,802,804,807,809,812],{"class":430,"line":803},6,[428,805,806],{"class":740},"  async",[428,808,744],{"class":740},[428,810,811],{"class":747}," fetchPosts",[428,813,751],{"class":434},[428,815,817,820,823],{"class":430,"line":816},7,[428,818,819],{"class":434},"    loading.value ",[428,821,822],{"class":740},"=",[428,824,825],{"class":759}," true\n",[428,827,829,832,834,837,840,842,846],{"class":430,"line":828},8,[428,830,831],{"class":434},"    posts.value ",[428,833,822],{"class":740},[428,835,836],{"class":740}," await",[428,838,839],{"class":747}," $fetch",[428,841,789],{"class":434},[428,843,845],{"class":844},"sZZnC","'\u002Fapi\u002Fblog'",[428,847,795],{"class":434},[428,849,851,853,855],{"class":430,"line":850},9,[428,852,819],{"class":434},[428,854,822],{"class":740},[428,856,857],{"class":759}," false\n",[428,859,861],{"class":430,"line":860},10,[428,862,863],{"class":434},"  }\n",[428,865,867],{"class":430,"line":866},11,[428,868,800],{"class":434},[428,870,872,875],{"class":430,"line":871},12,[428,873,874],{"class":740},"  return",[428,876,877],{"class":434}," { posts, loading, fetchPosts }\n",[428,879,881],{"class":430,"line":880},13,[428,882,883],{"class":434},"}\n",[12,885,886,887,890],{},"Tento composable môžete použiť v ľubovoľnom komponente jedným riadkom: ",[425,888,889],{},"const { posts, loading } = useBlogPosts()",".",[24,892,894],{"id":893},"typescript-všade","TypeScript všade",[12,896,897],{},"Nuxt 3 je napísaný v TypeScript a podporuje ho first-class. To znamená, že typy sa automaticky generujú pre API routes, content collections, env variables aj store.",[12,899,900],{},"Pre Modulo CMS to znamená, že keď píšete kód admin panelu, editor vám napovedá presne aké polia má článok, aké role existujú a aké API endpointy sú dostupné.",[24,902,904],{"id":903},"prečo-nie-nextjs-alebo-iné","Prečo nie Next.js alebo iné?",[12,906,907],{},"Táto otázka padá vždy. Next.js je skvelý framework — ale je to React. Vuetify (UI knižnica ktorú používame v admin paneli) je Vue-only. Ekosystém, na ktorý sme zvyknutí, je Vue ekosystém.",[12,909,910],{},"Okrem toho, Nuxt 3's @nuxt\u002Fcontent — knižnica pre správu Markdown obsahu — je natívna Nuxt knižnica a funguje bezproblémovo. Pre headless blog je toto ideálna kombinácia.",[24,912,127],{"id":126},[12,914,915],{},"Nuxt 3 nie je len \"ďalší framework\". Je to komplexné riešenie, ktoré rieši routing, rendering, TypeScript, auto-import, API a obsah v jednom konzistentnom balíku. Pre projekt ako Modulo CMS — kde admin a verejný web musia spolupracovať, ale byť nezávislé — je to ideálna technológia.",[12,917,918],{},"Ak vás zaujíma kód, Modulo CMS bude čoskoro open-source na GitHube.",[609,920,921],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":135,"searchDepth":136,"depth":136,"links":923},[924,925,926,927,928,929],{"id":640,"depth":136,"text":641},{"id":670,"depth":136,"text":671},{"id":704,"depth":136,"text":705},{"id":893,"depth":136,"text":894},{"id":903,"depth":136,"text":904},{"id":126,"depth":136,"text":127},"\u002Fblog\u002Fnuxt-3-pre-moderny-web\u002Fcover.webp","2026-05-28","SSR, SSG, hybrid rendering, edge deployment... Nuxt 3 zvláda všetko. Vysvetlíme, prečo je práve táto technológia základom Modulo CMS.",{},"\u002Fblog\u002Fnuxt-3-pre-moderny-web",{"title":632,"description":932},"blog\u002Fnuxt-3-pre-moderny-web","imtPlU9IuuzwvdaujQfhlk7bV6z8we6ZdxHpCzkShnk",{"id":939,"title":940,"author":7,"body":941,"category":1141,"cover":1142,"date":1143,"description":1144,"extension":157,"meta":1145,"navigation":159,"path":1146,"published":159,"seo":1147,"stem":1148,"__hash__":1149},"blog\u002Fblog\u002Fblog-modul-do-detailov.md","Blog modul — od napísania po publikovanie za 3 kroky",{"type":9,"value":942,"toc":1133},[943,949,952,955,959,962,973,977,980,983,1003,1006,1010,1013,1016,1021,1025,1032,1093,1099,1103,1106,1110,1113,1127,1130],[12,944,945,946],{},"Najdôležitejšia vec pri CMS systéme nie je technológia. Je to ",[188,947,948],{},"rýchlosť, s akou sa myšlienka stane publikovaným článkom.",[12,950,951],{},"Vo väčšine systémov to vyzerá takto: prihlásiť sa, nájsť tlačidlo \"nový príspevok\", vyplniť 15 polí, vybrať kategóriu z rozbaľovacieho menu, nahrať titulný obrázok, nastaviť SEO... až potom môžete písať.",[12,953,954],{},"V Modulo CMS je to inak.",[24,956,958],{"id":957},"krok-1-otvorte-editor","Krok 1: Otvorte editor",[12,960,961],{},"Kliknete na \"Nový článok\" v admin paneli. Otvorí sa TipTap editor — čistý, plnoekránový, bez rozptyľovania. Ľavá strana je váš text, pravá má len to najnutnejšie: názov, popis, kategória, autor, dátum, prepínač publikovať\u002Fuložiť koncept.",[12,963,964,965,968,969,972],{},"Editor podporuje Markdown syntax — ak napíšete ",[425,966,967],{},"## Nadpis",", zobrazí sa nadpis. ",[425,970,971],{},"**tučné**"," urobí tučné písmo. Môžete však jednoducho aj klikať na tlačidlá v nástrojovej lište.",[24,974,976],{"id":975},"krok-2-píšte","Krok 2: Píšte",[12,978,979],{},"Toto je krok, ktorý väčšina CMS systémov kazí. Editor je buď príliš jednoduchý (len čistý text) alebo príliš komplikovaný (plnohodnotné DTP s desiatkami možností).",[12,981,982],{},"TipTap editor v Modulo CMS je zlatý stred:",[106,984,985,988,991,994,997,1000],{},[109,986,987],{},"Nadpisy H2, H3",[109,989,990],{},"Tučné, kurzíva, odkaz",[109,992,993],{},"Odrážkový a číslovaný zoznam",[109,995,996],{},"Blokový citát",[109,998,999],{},"Kód inline aj blokový",[109,1001,1002],{},"Horizontálna čiara",[12,1004,1005],{},"Nič viac. Nič menej. Pre editoriálny obsah je to viac ako dosť.",[24,1007,1009],{"id":1008},"krok-3-publikujte","Krok 3: Publikujte",[12,1011,1012],{},"Keď ste spokojní, prepnete prepínač \"Publikovať\" a uložíte. Hotovo.",[12,1014,1015],{},"Pod povrchom sa stane nasledovné: admin panel uloží Markdown súbor na disk. Verejný web (@nuxt\u002Fcontent) sleduje tento adresár a automaticky zaregistruje nový článok. Žiadna databázová operácia, žiadne čakanie na deploy.",[12,1017,1018],{},[188,1019,1020],{},"Čas od \"nový článok\" po \"živý na webe\": zvyčajne menej ako minúta.",[24,1022,1024],{"id":1023},"čo-sa-deje-s-obsahom","Čo sa deje s obsahom?",[12,1026,1027,1028,1031],{},"Každý článok je uložený ako ",[425,1029,1030],{},".md"," súbor s YAML frontmatter. Vyzerá to takto:",[419,1033,1037],{"className":1034,"code":1035,"language":1036,"meta":135,"style":135},"language-markdown shiki shiki-themes github-light github-dark","---\ntitle: Môj článok\ndescription: Popis pre SEO\ndate: 2026-05-22\ncategory: cms\nauthor: Tomáš Renčík\ncover: \u002Fblog\u002Fblog-modul-do-detailov\u002Fcover.webp\npublished: true\n---\n\nText článku...\n","markdown",[425,1038,1039,1044,1049,1054,1059,1064,1069,1074,1079,1083,1088],{"__ignoreMap":135},[428,1040,1041],{"class":430,"line":431},[428,1042,1043],{},"---\n",[428,1045,1046],{"class":430,"line":136},[428,1047,1048],{},"title: Môj článok\n",[428,1050,1051],{"class":430,"line":141},[428,1052,1053],{},"description: Popis pre SEO\n",[428,1055,1056],{"class":430,"line":471},[428,1057,1058],{},"date: 2026-05-22\n",[428,1060,1061],{"class":430,"line":482},[428,1062,1063],{},"category: cms\n",[428,1065,1066],{"class":430,"line":803},[428,1067,1068],{},"author: Tomáš Renčík\n",[428,1070,1071],{"class":430,"line":816},[428,1072,1073],{},"cover: \u002Fblog\u002Fblog-modul-do-detailov\u002Fcover.webp\n",[428,1075,1076],{"class":430,"line":828},[428,1077,1078],{},"published: true\n",[428,1080,1081],{"class":430,"line":850},[428,1082,1043],{},[428,1084,1085],{"class":430,"line":860},[428,1086,1087],{"emptyLinePlaceholder":159},"\n",[428,1089,1090],{"class":430,"line":866},[428,1091,1092],{},"Text článku...\n",[12,1094,1095,1096],{},"Výhodou je, že obsah je čitateľný aj bez CMS systému. Môžete ho otvoriť v akomkoľvek textovom editore, zálohovať do gitu, preniesť na iný systém. ",[188,1097,1098],{},"Váš obsah je skutočne váš.",[24,1100,1102],{"id":1101},"kategórie-a-filtrovanie","Kategórie a filtrovanie",[12,1104,1105],{},"Blog modul podporuje kategórie, na verejnom webe funguje filtrovanie v reálnom čase — bez načítania stránky. Čitateľ klikne na kategóriu a karta okamžite filtruje. Toto je možné vďaka reaktivite Vue 3.",[24,1107,1109],{"id":1108},"čo-plánujeme","Čo plánujeme",[12,1111,1112],{},"V ďalšej verzii blog modulu plánujeme:",[106,1114,1115,1118,1121,1124],{},[109,1116,1117],{},"Titulné obrázky článkov",[109,1119,1120],{},"Súvisiace články na konci detailu",[109,1122,1123],{},"Vyhľadávanie v obsahu",[109,1125,1126],{},"RSS feed automaticky generovaný z MD súborov",[12,1128,1129],{},"Ak vás zaujíma konkrétna funkcia, napíšte nám — dopyt klientov určuje poradie vývoja.",[609,1131,1132],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":135,"searchDepth":136,"depth":136,"links":1134},[1135,1136,1137,1138,1139,1140],{"id":957,"depth":136,"text":958},{"id":975,"depth":136,"text":976},{"id":1008,"depth":136,"text":1009},{"id":1023,"depth":136,"text":1024},{"id":1101,"depth":136,"text":1102},{"id":1108,"depth":136,"text":1109},"cms","\u002Fblog\u002Fblog-modul-do-detailov\u002Fcover.webp","2026-05-22","Pozrite sa, ako funguje editorial workflow v Modulo CMS. Žiadna databáza, žiadne špeciálne nástroje — len text, ktorý si nájde cestu k čitateľovi.",{},"\u002Fblog\u002Fblog-modul-do-detailov",{"title":940,"description":1144},"blog\u002Fblog-modul-do-detailov","u88icJhEaaMV-tqHSmH3ycSzYQPNeFvSmpxLjQb7Lyc",{"id":1151,"title":1152,"author":7,"body":1153,"category":1141,"cover":1255,"date":1256,"description":1257,"extension":157,"meta":1258,"navigation":159,"path":1259,"published":159,"seo":1260,"stem":1261,"__hash__":1262},"blog\u002Fblog\u002Fpreco-headless-cms.md","Prečo sme vsadili na headless CMS — a neoľutovali",{"type":9,"value":1154,"toc":1244},[1155,1161,1164,1168,1171,1174,1177,1181,1184,1190,1194,1198,1201,1205,1208,1212,1215,1219,1222,1225,1228,1232,1235],[12,1156,1157,1158],{},"Keď sme začínali budovať Modulo CMS, mali sme jednoduchú otázku: ",[188,1159,1160],{},"Prečo musí byť správa obsahu viazaná na konkrétny dizajn?",[12,1162,1163],{},"Tradičné CMS systémy ako WordPress fungujú tak, že frontend (šablóna) a backend (obsah + databáza) sú súčasťou toho istého systému. To má svoje výhody — všetko je na jednom mieste. Ale má to aj zásadnú nevýhodu.",[24,1165,1167],{"id":1166},"problém-s-monolitickým-prístupom","Problém s monolitickým prístupom",[12,1169,1170],{},"Predstavte si, že máte napísaných 200 článkov v systéme XY. Rozhodnete sa prerobiť web. Čo teraz? Musíte celý web prerobiť v tom istom systéme, alebo exportovať obsah a importovať ho niekde inde — čo je zdĺhavé a náchylné na chyby.",[12,1172,1173],{},"Alebo chcete zobraziť obsah zároveň na webe aj v mobilnej aplikácii. V tradičnom CMS to zvyčajne znamená duplicitu — dvaja redaktori píšu to isté.",[12,1175,1176],{},"Headless CMS rieši oba problémy naraz.",[24,1178,1180],{"id":1179},"čo-znamená-headless","Čo znamená \"headless\"",[12,1182,1183],{},"Headless CMS ukladá obsah bez toho, aby vedel, kde a ako sa zobrazí. Obsah je dostupný cez API alebo priamo ako súbory (v našom prípade Markdown). Frontend — teda to, čo vidí návštevník — si môžete postaviť v akejkoľvek technológii.",[12,1185,1186,1187],{},"V Modulo CMS je obsah uložený v Markdown súboroch. Admin panel slúži na ich správu. Verejný web ich načítava a zobrazuje. ",[188,1188,1189],{},"Sú to dve nezávislé aplikácie, ktoré spolupracujú.",[24,1191,1193],{"id":1192},"výhody-ktoré-sme-sami-zažili","Výhody, ktoré sme sami zažili",[29,1195,1197],{"id":1196},"sloboda-vo-frontende","Sloboda vo frontende",[12,1199,1200],{},"Keď sme menili dizajn verejného webu, nemuseli sme sa dotknúť ani jedného obsahu. Zmena vizuálu neznamená žiadnu migráciu dát.",[29,1202,1204],{"id":1203},"obsah-raz-použitie-viackrát","Obsah raz, použitie viackrát",[12,1206,1207],{},"Rovnaký Markdown súbor môže čítať web, mobilná aplikácia, aj RSS feed. Obsah je v jednom mieste, formát výstupu závisí od konzumenta.",[29,1209,1211],{"id":1210},"rýchlosť-a-bezpečnosť","Rýchlosť a bezpečnosť",[12,1213,1214],{},"Keďže verejný web nemusí komunikovať s databázou v reálnom čase, môže byť staticky vygenerovaný. Je rýchlejší a bezpečnejší — neexistuje priamo exponovaná databáza.",[24,1216,1218],{"id":1217},"kedy-headless-cms-nie-je-vhodný","Kedy headless CMS nie je vhodný",[12,1220,1221],{},"Je dôležité byť úprimný. Headless nie je pre všetkých.",[12,1223,1224],{},"Ak potrebujete rýchlo rozbehnúť jednoduchý blog bez vývojára, WordPress s hotovou temou je stále legitímna voľba. Headless CMS vyžaduje aspoň základné pochopenie, ako funguje frontend a backend.",[12,1226,1227],{},"Pre tímy s vývojármi alebo pre projekty, kde je dôležitá flexibilita a výkon, je headless prístup dlhodobo správnejší.",[24,1229,1231],{"id":1230},"naša-odpoveď-modulo-cms","Naša odpoveď: Modulo CMS",[12,1233,1234],{},"Modulo CMS sme navrhli tak, aby headless prístup bol čo najpristupnejší. Admin panel je intuitívny pre každého redaktora. Markdown formát je jednoduchý a prenositeľný. Verejný web beží na Nuxt 3 — jednom z najrýchlejších frameworkov.",[12,1236,1237,1238,890],{},"Ak sa chcete pozrieť, ako to funguje v praxi, admin panel je dostupný na ",[369,1239,1243],{"href":1240,"rel":1241},"https:\u002F\u002Fadmin.modulocms.sk",[1242],"nofollow","admin.modulocms.sk",{"title":135,"searchDepth":136,"depth":136,"links":1245},[1246,1247,1248,1253,1254],{"id":1166,"depth":136,"text":1167},{"id":1179,"depth":136,"text":1180},{"id":1192,"depth":136,"text":1193,"children":1249},[1250,1251,1252],{"id":1196,"depth":141,"text":1197},{"id":1203,"depth":141,"text":1204},{"id":1210,"depth":141,"text":1211},{"id":1217,"depth":136,"text":1218},{"id":1230,"depth":136,"text":1231},"\u002Fblog\u002Fpreco-headless-cms\u002Fcover.webp","2026-05-15","Tradičné systémy spájajú obsah s prezentáciou natvrdo. Headless prístup ich oddeľuje a dáva vám slobodu. Tu je to, čo sme sa naučili.",{},"\u002Fblog\u002Fpreco-headless-cms",{"title":1152,"description":1257},"blog\u002Fpreco-headless-cms","OzCP79g34sel9JJL6ywuyJSOMmJpLNB1syT276U-Jf0",1782179199930]