Hugoifier

hugoifier / about / index.html
1
2
<!doctype html>
3
<html lang="en" class="no-js">
4
<head>
5
6
<meta charset="utf-8">
7
<meta name="viewport" content="width=device-width,initial-scale=1">
8
9
<meta name="description" content="AI-powered Hugo theme converter with Decap CMS integration">
10
11
12
<meta name="author" content="CONFLICT LLC">
13
14
15
<link rel="canonical" href="https://hugoifier.dev/about/">
16
17
18
<link rel="prev" href="../architecture/">
19
20
21
22
23
24
25
<link rel="icon" href="../assets/images/favicon.png">
26
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.5">
27
28
29
30
<title>Why Hugo + Cloudflare - Hugoifier</title>
31
32
33
34
<link rel="stylesheet" href="../assets/stylesheets/main.484c7ddc.min.css">
35
36
37
<link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
38
39
40
41
42
43
44
45
46
47
48
49
50
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
51
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
52
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
53
54
55
56
<link rel="stylesheet" href="../assets/css/custom.css">
57
58
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
59
60
61
62
63
64
</head>
65
66
67
68
69
70
71
72
73
74
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom">
75
76
77
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
78
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
79
<label class="md-overlay" for="__drawer"></label>
80
<div data-md-component="skip">
81
82
83
<a href="#why-hugo-cloudflare" class="md-skip">
84
Skip to content
85
</a>
86
87
</div>
88
<div data-md-component="announce">
89
90
</div>
91
92
93
94
95
<header class="md-header" data-md-component="header">
96
<nav class="md-header__inner md-grid" aria-label="Header">
97
<a href=".." title="Hugoifier" class="md-header__button md-logo" aria-label="Hugoifier" data-md-component="logo">
98
99
<img src="../assets/images/conflict-logo.svg" alt="logo">
100
101
</a>
102
<label class="md-header__button md-icon" for="__drawer">
103
104
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
105
</label>
106
<div class="md-header__title" data-md-component="header-title">
107
<div class="md-header__ellipsis">
108
<div class="md-header__topic">
109
<span class="md-ellipsis">
110
Hugoifier
111
</span>
112
</div>
113
<div class="md-header__topic" data-md-component="header-topic">
114
<span class="md-ellipsis">
115
116
Why Hugo + Cloudflare
117
118
</span>
119
</div>
120
</div>
121
</div>
122
123
124
<form class="md-header__option" data-md-component="palette">
125
126
127
128
129
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
130
131
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
132
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
133
</label>
134
135
136
137
138
139
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
140
141
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
142
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
143
</label>
144
145
146
</form>
147
148
149
150
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
151
152
153
154
155
156
<label class="md-header__button md-icon" for="__search">
157
158
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
159
</label>
160
<div class="md-search" data-md-component="search" role="dialog">
161
<label class="md-search__overlay" for="__search"></label>
162
<div class="md-search__inner" role="search">
163
<form class="md-search__form" name="search">
164
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
165
<label class="md-search__icon md-icon" for="__search">
166
167
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
168
169
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
170
</label>
171
<nav class="md-search__options" aria-label="Search">
172
173
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
174
175
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
176
</button>
177
</nav>
178
179
<div class="md-search__suggest" data-md-component="search-suggest"></div>
180
181
</form>
182
<div class="md-search__output">
183
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
184
<div class="md-search-result" data-md-component="search-result">
185
<div class="md-search-result__meta">
186
Initializing search
187
</div>
188
<ol class="md-search-result__list" role="presentation"></ol>
189
</div>
190
</div>
191
</div>
192
</div>
193
</div>
194
195
196
197
<div class="md-header__source">
198
<a href="https://github.com/ConflictHQ/hugoifier" title="Go to repository" class="md-source" data-md-component="source">
199
<div class="md-source__icon md-icon">
200
201
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
202
</div>
203
<div class="md-source__repository">
204
ConflictHQ/hugoifier
205
</div>
206
</a>
207
</div>
208
209
</nav>
210
211
</header>
212
213
<div class="md-container" data-md-component="container">
214
215
216
217
218
219
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
220
<div class="md-grid">
221
<ul class="md-tabs__list">
222
223
224
225
226
227
228
<li class="md-tabs__item">
229
<a href=".." class="md-tabs__link">
230
231
232
233
234
235
Home
236
237
</a>
238
</li>
239
240
241
242
243
244
245
246
247
248
249
<li class="md-tabs__item">
250
<a href="../getting-started/installation/" class="md-tabs__link">
251
252
253
254
Getting Started
255
256
</a>
257
</li>
258
259
260
261
262
263
264
265
266
267
<li class="md-tabs__item">
268
<a href="../cli-reference/" class="md-tabs__link">
269
270
271
272
273
274
CLI Reference
275
276
</a>
277
</li>
278
279
280
281
282
283
284
285
286
<li class="md-tabs__item">
287
<a href="../architecture/" class="md-tabs__link">
288
289
290
291
292
293
Architecture
294
295
</a>
296
</li>
297
298
299
300
301
302
303
304
305
306
307
<li class="md-tabs__item md-tabs__item--active">
308
<a href="./" class="md-tabs__link">
309
310
311
312
313
314
Why Hugo + Cloudflare
315
316
</a>
317
</li>
318
319
320
321
</ul>
322
</div>
323
</nav>
324
325
326
327
<main class="md-main" data-md-component="main">
328
<div class="md-main__inner md-grid">
329
330
331
332
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
333
<div class="md-sidebar__scrollwrap">
334
<div class="md-sidebar__inner">
335
336
337
338
339
340
341
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
342
<label class="md-nav__title" for="__drawer">
343
<a href=".." title="Hugoifier" class="md-nav__button md-logo" aria-label="Hugoifier" data-md-component="logo">
344
345
<img src="../assets/images/conflict-logo.svg" alt="logo">
346
347
</a>
348
Hugoifier
349
</label>
350
351
<div class="md-nav__source">
352
<a href="https://github.com/ConflictHQ/hugoifier" title="Go to repository" class="md-source" data-md-component="source">
353
<div class="md-source__icon md-icon">
354
355
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
356
</div>
357
<div class="md-source__repository">
358
ConflictHQ/hugoifier
359
</div>
360
</a>
361
</div>
362
363
<ul class="md-nav__list" data-md-scrollfix>
364
365
366
367
368
369
370
371
<li class="md-nav__item">
372
<a href=".." class="md-nav__link">
373
374
375
376
<span class="md-ellipsis">
377
378
379
Home
380
381
382
383
</span>
384
385
386
387
</a>
388
</li>
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
<li class="md-nav__item md-nav__item--nested">
409
410
411
412
413
414
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
415
416
417
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
418
419
420
421
<span class="md-ellipsis">
422
423
424
Getting Started
425
426
427
428
</span>
429
430
431
432
<span class="md-nav__icon md-icon"></span>
433
</label>
434
435
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
436
<label class="md-nav__title" for="__nav_2">
437
<span class="md-nav__icon md-icon"></span>
438
439
440
Getting Started
441
442
443
</label>
444
<ul class="md-nav__list" data-md-scrollfix>
445
446
447
448
449
450
451
452
<li class="md-nav__item">
453
<a href="../getting-started/installation/" class="md-nav__link">
454
455
456
457
<span class="md-ellipsis">
458
459
460
Installation
461
462
463
464
</span>
465
466
467
468
</a>
469
</li>
470
471
472
473
474
475
476
477
478
479
480
<li class="md-nav__item">
481
<a href="../getting-started/quickstart/" class="md-nav__link">
482
483
484
485
<span class="md-ellipsis">
486
487
488
Quick Start
489
490
491
492
</span>
493
494
495
496
</a>
497
</li>
498
499
500
501
502
503
504
505
506
507
508
<li class="md-nav__item">
509
<a href="../getting-started/configuration/" class="md-nav__link">
510
511
512
513
<span class="md-ellipsis">
514
515
516
Configuration
517
518
519
520
</span>
521
522
523
524
</a>
525
</li>
526
527
528
529
530
</ul>
531
</nav>
532
533
</li>
534
535
536
537
538
539
540
541
542
543
<li class="md-nav__item">
544
<a href="../cli-reference/" class="md-nav__link">
545
546
547
548
<span class="md-ellipsis">
549
550
551
CLI Reference
552
553
554
555
</span>
556
557
558
559
</a>
560
</li>
561
562
563
564
565
566
567
568
569
570
<li class="md-nav__item">
571
<a href="../architecture/" class="md-nav__link">
572
573
574
575
<span class="md-ellipsis">
576
577
578
Architecture
579
580
581
582
</span>
583
584
585
586
</a>
587
</li>
588
589
590
591
592
593
594
595
596
597
598
599
<li class="md-nav__item md-nav__item--active">
600
601
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
602
603
604
605
606
607
<label class="md-nav__link md-nav__link--active" for="__toc">
608
609
610
611
<span class="md-ellipsis">
612
613
614
Why Hugo + Cloudflare
615
616
617
618
</span>
619
620
621
622
<span class="md-nav__icon md-icon"></span>
623
</label>
624
625
<a href="./" class="md-nav__link md-nav__link--active">
626
627
628
629
<span class="md-ellipsis">
630
631
632
Why Hugo + Cloudflare
633
634
635
636
</span>
637
638
639
640
</a>
641
642
643
644
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
645
646
647
648
649
650
651
<label class="md-nav__title" for="__toc">
652
<span class="md-nav__icon md-icon"></span>
653
Table of contents
654
</label>
655
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
656
657
<li class="md-nav__item">
658
<a href="#why-hugo" class="md-nav__link">
659
<span class="md-ellipsis">
660
661
Why Hugo
662
663
</span>
664
</a>
665
666
<nav class="md-nav" aria-label="Why Hugo">
667
<ul class="md-nav__list">
668
669
<li class="md-nav__item">
670
<a href="#no-database" class="md-nav__link">
671
<span class="md-ellipsis">
672
673
No Database
674
675
</span>
676
</a>
677
678
</li>
679
680
<li class="md-nav__item">
681
<a href="#unhackable-by-design" class="md-nav__link">
682
<span class="md-ellipsis">
683
684
Unhackable by Design
685
686
</span>
687
</a>
688
689
</li>
690
691
<li class="md-nav__item">
692
<a href="#markdown-content" class="md-nav__link">
693
<span class="md-ellipsis">
694
695
Markdown Content
696
697
</span>
698
</a>
699
700
</li>
701
702
<li class="md-nav__item">
703
<a href="#built-for-the-edge" class="md-nav__link">
704
<span class="md-ellipsis">
705
706
Built for the Edge
707
708
</span>
709
</a>
710
711
</li>
712
713
<li class="md-nav__item">
714
<a href="#fast-really-fast" class="md-nav__link">
715
<span class="md-ellipsis">
716
717
Fast. Really Fast.
718
719
</span>
720
</a>
721
722
</li>
723
724
<li class="md-nav__item">
725
<a href="#easy-to-maintain" class="md-nav__link">
726
<span class="md-ellipsis">
727
728
Easy to Maintain
729
730
</span>
731
</a>
732
733
</li>
734
735
</ul>
736
</nav>
737
738
</li>
739
740
<li class="md-nav__item">
741
<a href="#why-cloudflare-pages" class="md-nav__link">
742
<span class="md-ellipsis">
743
744
Why Cloudflare Pages
745
746
</span>
747
</a>
748
749
<nav class="md-nav" aria-label="Why Cloudflare Pages">
750
<ul class="md-nav__list">
751
752
<li class="md-nav__item">
753
<a href="#free-hosting-that-actually-scales" class="md-nav__link">
754
<span class="md-ellipsis">
755
756
Free Hosting That Actually Scales
757
758
</span>
759
</a>
760
761
</li>
762
763
<li class="md-nav__item">
764
<a href="#performance-at-the-edge" class="md-nav__link">
765
<span class="md-ellipsis">
766
767
Performance at the Edge
768
769
</span>
770
</a>
771
772
</li>
773
774
<li class="md-nav__item">
775
<a href="#built-in-https-ddos-protection-analytics" class="md-nav__link">
776
<span class="md-ellipsis">
777
778
Built-in HTTPS, DDoS Protection, Analytics
779
780
</span>
781
</a>
782
783
</li>
784
785
<li class="md-nav__item">
786
<a href="#git-native-deployments" class="md-nav__link">
787
<span class="md-ellipsis">
788
789
Git-native Deployments
790
791
</span>
792
</a>
793
794
</li>
795
796
</ul>
797
</nav>
798
799
</li>
800
801
<li class="md-nav__item">
802
<a href="#why-github" class="md-nav__link">
803
<span class="md-ellipsis">
804
805
Why GitHub
806
807
</span>
808
</a>
809
810
</li>
811
812
<li class="md-nav__item">
813
<a href="#the-case-against-overbuilding" class="md-nav__link">
814
<span class="md-ellipsis">
815
816
The Case Against Overbuilding
817
818
</span>
819
</a>
820
821
</li>
822
823
<li class="md-nav__item">
824
<a href="#the-catch-and-how-hugoifier-fixes-it" class="md-nav__link">
825
<span class="md-ellipsis">
826
827
The Catch — and How Hugoifier Fixes It
828
829
</span>
830
</a>
831
832
</li>
833
834
</ul>
835
836
</nav>
837
838
</li>
839
840
841
842
</ul>
843
</nav>
844
</div>
845
</div>
846
</div>
847
848
849
850
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
851
<div class="md-sidebar__scrollwrap">
852
<div class="md-sidebar__inner">
853
854
855
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
856
857
858
859
860
861
862
<label class="md-nav__title" for="__toc">
863
<span class="md-nav__icon md-icon"></span>
864
Table of contents
865
</label>
866
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
867
868
<li class="md-nav__item">
869
<a href="#why-hugo" class="md-nav__link">
870
<span class="md-ellipsis">
871
872
Why Hugo
873
874
</span>
875
</a>
876
877
<nav class="md-nav" aria-label="Why Hugo">
878
<ul class="md-nav__list">
879
880
<li class="md-nav__item">
881
<a href="#no-database" class="md-nav__link">
882
<span class="md-ellipsis">
883
884
No Database
885
886
</span>
887
</a>
888
889
</li>
890
891
<li class="md-nav__item">
892
<a href="#unhackable-by-design" class="md-nav__link">
893
<span class="md-ellipsis">
894
895
Unhackable by Design
896
897
</span>
898
</a>
899
900
</li>
901
902
<li class="md-nav__item">
903
<a href="#markdown-content" class="md-nav__link">
904
<span class="md-ellipsis">
905
906
Markdown Content
907
908
</span>
909
</a>
910
911
</li>
912
913
<li class="md-nav__item">
914
<a href="#built-for-the-edge" class="md-nav__link">
915
<span class="md-ellipsis">
916
917
Built for the Edge
918
919
</span>
920
</a>
921
922
</li>
923
924
<li class="md-nav__item">
925
<a href="#fast-really-fast" class="md-nav__link">
926
<span class="md-ellipsis">
927
928
Fast. Really Fast.
929
930
</span>
931
</a>
932
933
</li>
934
935
<li class="md-nav__item">
936
<a href="#easy-to-maintain" class="md-nav__link">
937
<span class="md-ellipsis">
938
939
Easy to Maintain
940
941
</span>
942
</a>
943
944
</li>
945
946
</ul>
947
</nav>
948
949
</li>
950
951
<li class="md-nav__item">
952
<a href="#why-cloudflare-pages" class="md-nav__link">
953
<span class="md-ellipsis">
954
955
Why Cloudflare Pages
956
957
</span>
958
</a>
959
960
<nav class="md-nav" aria-label="Why Cloudflare Pages">
961
<ul class="md-nav__list">
962
963
<li class="md-nav__item">
964
<a href="#free-hosting-that-actually-scales" class="md-nav__link">
965
<span class="md-ellipsis">
966
967
Free Hosting That Actually Scales
968
969
</span>
970
</a>
971
972
</li>
973
974
<li class="md-nav__item">
975
<a href="#performance-at-the-edge" class="md-nav__link">
976
<span class="md-ellipsis">
977
978
Performance at the Edge
979
980
</span>
981
</a>
982
983
</li>
984
985
<li class="md-nav__item">
986
<a href="#built-in-https-ddos-protection-analytics" class="md-nav__link">
987
<span class="md-ellipsis">
988
989
Built-in HTTPS, DDoS Protection, Analytics
990
991
</span>
992
</a>
993
994
</li>
995
996
<li class="md-nav__item">
997
<a href="#git-native-deployments" class="md-nav__link">
998
<span class="md-ellipsis">
999
1000
Git-native Deployments
1001
1002
</span>
1003
</a>
1004
1005
</li>
1006
1007
</ul>
1008
</nav>
1009
1010
</li>
1011
1012
<li class="md-nav__item">
1013
<a href="#why-github" class="md-nav__link">
1014
<span class="md-ellipsis">
1015
1016
Why GitHub
1017
1018
</span>
1019
</a>
1020
1021
</li>
1022
1023
<li class="md-nav__item">
1024
<a href="#the-case-against-overbuilding" class="md-nav__link">
1025
<span class="md-ellipsis">
1026
1027
The Case Against Overbuilding
1028
1029
</span>
1030
</a>
1031
1032
</li>
1033
1034
<li class="md-nav__item">
1035
<a href="#the-catch-and-how-hugoifier-fixes-it" class="md-nav__link">
1036
<span class="md-ellipsis">
1037
1038
The Catch — and How Hugoifier Fixes It
1039
1040
</span>
1041
</a>
1042
1043
</li>
1044
1045
</ul>
1046
1047
</nav>
1048
</div>
1049
</div>
1050
</div>
1051
1052
1053
1054
<div class="md-content" data-md-component="content">
1055
1056
<article class="md-content__inner md-typeset">
1057
1058
1059
1060
1061
1062
1063
1064
1065
<h1 id="why-hugo-cloudflare">Why Hugo + Cloudflare?<a class="headerlink" href="#why-hugo-cloudflare" title="Permanent link">&para;</a></h1>
1066
<p>Most websites don't need a database, a server, or a $200/month hosting bill. They need fast, reliable delivery of content that doesn't change on every request. Hugo and Cloudflare Pages are built exactly for that — and together they're one of the best stacks for anyone who just needs a website.</p>
1067
<hr />
1068
<h2 id="why-hugo">Why Hugo<a class="headerlink" href="#why-hugo" title="Permanent link">&para;</a></h2>
1069
<h3 id="no-database">No Database<a class="headerlink" href="#no-database" title="Permanent link">&para;</a></h3>
1070
<p>Traditional CMS platforms — WordPress, Drupal, Ghost — hit a database on every page load. That database is the single biggest source of downtime, security vulnerabilities, and scaling headaches. Hugo generates pure static HTML at build time. There is no database. There is nothing to query, nothing to corrupt, nothing to patch.</p>
1071
<h3 id="unhackable-by-design">Unhackable by Design<a class="headerlink" href="#unhackable-by-design" title="Permanent link">&para;</a></h3>
1072
<p>If there's no server-side code running when a visitor hits your site, there's nothing to exploit. No PHP injection. No SQL injection. No session hijacking. No CVE-of-the-week to scramble and patch at 2am. A static site's attack surface is essentially zero — you're just serving files.</p>
1073
<h3 id="markdown-content">Markdown Content<a class="headerlink" href="#markdown-content" title="Permanent link">&para;</a></h3>
1074
<p>Your content lives in plain <code>.md</code> files in a Git repository. That means:</p>
1075
<ul>
1076
<li><strong>Version-controlled</strong> — every edit is tracked, every change is reversible</li>
1077
<li><strong>Portable</strong> — no vendor lock-in, no proprietary export format</li>
1078
<li><strong>Writable anywhere</strong> — any text editor, any machine, offline</li>
1079
<li><strong>Diffable</strong> — you can review content changes in a PR like code changes</li>
1080
</ul>
1081
<h3 id="built-for-the-edge">Built for the Edge<a class="headerlink" href="#built-for-the-edge" title="Permanent link">&para;</a></h3>
1082
<p>Hugo compiles your site to pure static HTML at build time. There's no server, no runtime, no application to deploy — just files. That means the output can be dropped onto any CDN and served directly from the edge, everywhere in the world, simultaneously.</p>
1083
<p>When a visitor hits your site, Cloudflare serves the HTML from a data center that's physically close to them — often within milliseconds of their location. There's no origin server to round-trip to, no database query in the critical path, no cold start. The page is already there, pre-rendered, waiting.</p>
1084
<p>This is what "edge-native" actually means in practice: static HTML that travels well. Every CDN on the planet — Cloudflare, Fastly, AWS CloudFront, GitHub Pages — is designed exactly for this. You get global low-latency delivery for free, as a natural consequence of how Hugo works.</p>
1085
<h3 id="fast-really-fast">Fast. Really Fast.<a class="headerlink" href="#fast-really-fast" title="Permanent link">&para;</a></h3>
1086
<p>Hugo is written in Go and builds thousands of pages in under a second. But the build speed is almost beside the point — the real win is that the <em>output</em> is fast. Pre-rendered HTML with no runtime processing means your pages load in milliseconds, anywhere in the world, without caching tricks, optimization layers, or infrastructure tuning.</p>
1087
<h3 id="easy-to-maintain">Easy to Maintain<a class="headerlink" href="#easy-to-maintain" title="Permanent link">&para;</a></h3>
1088
<p>No plugins to update. No runtime dependencies to keep in sync. No hosting environment to babysit. The site you build today will still build correctly in five years from the same source files.</p>
1089
<hr />
1090
<h2 id="why-cloudflare-pages">Why Cloudflare Pages<a class="headerlink" href="#why-cloudflare-pages" title="Permanent link">&para;</a></h2>
1091
<h3 id="free-hosting-that-actually-scales">Free Hosting That Actually Scales<a class="headerlink" href="#free-hosting-that-actually-scales" title="Permanent link">&para;</a></h3>
1092
<p>Cloudflare Pages has no bandwidth limits on the free tier. Your site is served from Cloudflare's global edge network — over 300 data centers worldwide — at no cost. Whether you get 10 visitors or 10 million, the bill doesn't change.</p>
1093
<p>GitHub Pages works the same way for public repositories. Both are production-grade CDN infrastructure available for free.</p>
1094
<h3 id="performance-at-the-edge">Performance at the Edge<a class="headerlink" href="#performance-at-the-edge" title="Permanent link">&para;</a></h3>
1095
<p>Static files served from the edge means the HTML is already at a data center close to your visitor before they even request it. There's no origin server round-trip, no cold start, no database query in the path. Time-to-first-byte is measured in single-digit milliseconds.</p>
1096
<h3 id="built-in-https-ddos-protection-analytics">Built-in HTTPS, DDoS Protection, Analytics<a class="headerlink" href="#built-in-https-ddos-protection-analytics" title="Permanent link">&para;</a></h3>
1097
<p>Cloudflare wraps every site with:</p>
1098
<ul>
1099
<li>Automatic SSL certificates and HTTPS enforcement</li>
1100
<li>DDoS mitigation by default (the same protection enterprises pay for)</li>
1101
<li>Web analytics without tracking scripts</li>
1102
<li>Automatic redirects, custom headers, and edge functions if you ever need them</li>
1103
</ul>
1104
<h3 id="git-native-deployments">Git-native Deployments<a class="headerlink" href="#git-native-deployments" title="Permanent link">&para;</a></h3>
1105
<p>Push to <code>main</code>, site updates. Every PR gets a preview deployment at a unique URL. No deploy scripts, no CI configuration required.</p>
1106
<hr />
1107
<h2 id="why-github">Why GitHub<a class="headerlink" href="#why-github" title="Permanent link">&para;</a></h2>
1108
<p>Your site's content is a Git repository. That's not a technical detail — it's the whole point.</p>
1109
<p>Git gives you a complete, timestamped history of every word ever published on your site. Revert a bad edit in seconds. See exactly what changed and when. Run your content through pull request review before it goes live.</p>
1110
<p>GitHub adds a layer on top of that:</p>
1111
<ul>
1112
<li><strong>Free hosting</strong> — GitHub Pages serves static sites directly from your repo at no cost, with a CDN and HTTPS included</li>
1113
<li><strong>Collaboration</strong> — anyone with a GitHub account can fork your repo, propose changes, and submit a PR. No user accounts, no permissions system to manage</li>
1114
<li><strong>Automation</strong> — GitHub Actions runs your Hugo build and deploys it on every push. The workflow is a file in your repo, version-controlled alongside your content</li>
1115
<li><strong>Decap CMS integration</strong> — Decap CMS (which Hugoifier configures automatically) uses Git Gateway to commit content changes directly back to GitHub. Your editors use a clean web UI; under the hood it's just commits</li>
1116
<li><strong>Single source of truth</strong> — content, theme, config, and deploy pipeline all live in one place. No external services to keep in sync, no credentials to rotate, no staging environments to maintain</li>
1117
</ul>
1118
<p>GitHub is free for public repositories and has been running reliably for over 15 years. For a website, it's all the infrastructure you need.</p>
1119
<hr />
1120
<h2 id="the-case-against-overbuilding">The Case Against Overbuilding<a class="headerlink" href="#the-case-against-overbuilding" title="Permanent link">&para;</a></h2>
1121
<p>The internet is full of websites that are WordPress or Next.js or a React SPA backed by a database — not because those sites need any of that, but because that's what the developer knew how to build.</p>
1122
<p>A restaurant menu doesn't need a database.
1123
A portfolio doesn't need server-side rendering.
1124
A documentation site doesn't need a JavaScript framework.</p>
1125
<p>Hugo + Cloudflare Pages gives you a site that:</p>
1126
<ul>
1127
<li>Costs <strong>$0/month</strong> to host (or very close to it)</li>
1128
<li>Loads in <strong>under 1 second</strong> globally</li>
1129
<li>Has <strong>no attack surface</strong></li>
1130
<li><strong>Never goes down</strong> because of a database or application server</li>
1131
<li>Is <strong>owned by you</strong> — files in a Git repo, portable anywhere</li>
1132
</ul>
1133
<p>That's what Hugoifier is built to produce. Take any theme, convert it, deploy it. No infrastructure required.</p>
1134
<hr />
1135
<h2 id="the-catch-and-how-hugoifier-fixes-it">The Catch — and How Hugoifier Fixes It<a class="headerlink" href="#the-catch-and-how-hugoifier-fixes-it" title="Permanent link">&para;</a></h2>
1136
<p>Hugo is excellent, but it has a learning curve. You need to understand themes, layouts, front matter, Go templating, and <code>hugo.toml</code>. Converting an existing HTML/CSS design to a working Hugo theme takes hours. Wiring up a CMS so a non-developer can edit content takes more hours still.</p>
1137
<p>Most people give up and go back to WordPress, Squarespace, or paying a developer.</p>
1138
<p>Hugoifier removes that barrier. Point it at any HTML theme or existing Hugo theme, and it:</p>
1139
<ol>
1140
<li><strong>Converts the HTML to Hugo layouts</strong> — using AI to map static content to <code>{{ .Title }}</code>, <code>{{ range .Pages }}</code>, partials, and template blocks</li>
1141
<li><strong>Assembles a working site</strong> — with the right directory structure, a modern <code>hugo.toml</code>, and deprecated API patches applied automatically</li>
1142
<li><strong>Wires up Decap CMS</strong> — so editors get a clean admin panel at <code>/admin/</code> backed by Git, with no separate backend to run</li>
1143
</ol>
1144
<p>You get all the benefits of the Hugo + Cloudflare stack without needing to understand any of it to get started.</p>
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
</article>
1159
</div>
1160
1161
1162
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
1163
1164
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
1165
</div>
1166
1167
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
1168
1169
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
1170
Back to top
1171
</button>
1172
1173
</main>
1174
1175
<footer class="md-footer">
1176
1177
<div class="md-footer-meta md-typeset">
1178
<div class="md-footer-meta__inner md-grid">
1179
<div class="md-copyright">
1180
1181
<div class="md-copyright__highlight">
1182
Copyright &copy; 2026 CONFLICT LLC
1183
</div>
1184
1185
1186
Made with
1187
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1188
Material for MkDocs
1189
</a>
1190
1191
</div>
1192
1193
1194
<div class="md-social">
1195
1196
1197
1198
1199
1200
1201
1202
1203
<a href="https://github.com/ConflictHQ/hugoifier" target="_blank" rel="noopener" title="github.com" class="md-social__link">
1204
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
1205
</a>
1206
1207
</div>
1208
1209
</div>
1210
</div>
1211
</footer>
1212
1213
</div>
1214
<div class="md-dialog" data-md-component="dialog">
1215
<div class="md-dialog__inner md-typeset"></div>
1216
</div>
1217
1218
1219
1220
1221
1222
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["navigation.instant", "navigation.tabs", "navigation.sections", "navigation.expand", "navigation.top", "search.suggest", "search.highlight", "content.code.copy", "content.tabs.link", "header.autohide"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
1223
1224
1225
<script src="../assets/javascripts/bundle.79ae519e.min.js"></script>
1226
1227
1228
</body>
1229
</html>

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button