[{"data":1,"prerenderedAt":748},["ShallowReactive",2],{"\u002Fblogs\u002Fcreate-hugo-blog-as-an-wordpress-alternative":3},{"id":4,"title":5,"body":6,"coverImage":735,"description":738,"extension":739,"meta":740,"navigation":741,"path":742,"publishedOn":743,"seo":744,"sitemap":745,"stem":746,"__hash__":747},"content\u002Fblogs\u002Fcreate-hugo-blog-as-an-wordpress-alternative.md","Create an Overpowered Hugo Blog (as an WordPress Alternative)",{"type":7,"value":8,"toc":720},"minimark",[9,24,42,45,48,51,54,59,76,85,93,102,117,120,143,146,150,159,162,166,193,209,217,224,227,231,234,252,255,258,266,269,273,276,298,301,318,325,331,334,337,343,346,349,358,361,370,373,377,384,387,407,420,427,430,433,437,444,453,456,459,470,473,488,491,494,497,508,511,515,528,547,550,573,582,586,593,599,602,605,614,617,626,638,641,644,647,661,664,667,671,674,681,702,705],[10,11,12,13,23],"p",{},"A developer without a blog is like a fisherman without their fishing rod. While\nit is possible to fish with just a thread & a hook, the rod makes life much\neasier for the fishermen. In that context, Dan Bader summed it up well in his\narticle — ",[14,15,19],"a",{"href":16,"rel":17},"https:\u002F\u002Fdbader.org\u002Fblog\u002F3-reasons-why-you-need-a-programming-blog",[18],"nofollow",[20,21,22],"em",{},"3 Reasons Why You Need a Programming Blog",".",[10,25,26,27,34,35,23],{},"But, if you’ve read some of my previous articles, you would know choosing the\nright tools to blog is no easy task. I wrote about such a dilemma I was in\nearlier. Here’s the\narticle — ",[14,28,31],{"href":29,"rel":30},"https:\u002F\u002Fjarmos.netlify.app\u002Fposts\u002Fmedium-vs-static-site-generators",[18],[20,32,33],{},"Medium vs Static Site Generators — A Computer Vision Engineer’s Dilemma",".\nSince publishing that article I had time to experiment with existing blogging\ntools. And I reviewed each of them. You can read the review\nat — ",[14,36,39],{"href":37,"rel":38},"https:\u002F\u002Fjarmos.netlify.app\u002Fposts\u002Freviewing-popular-static-site-generators",[18],[20,40,41],{},"A Review of Some of the Most Popular Static Site Generators",[10,43,44],{},"Suffice to say, Static Sites Generators did rescue me out of my dilemma.",[10,46,47],{},"Static sites also come with the added benefit of never having to worry about\nserver maintenance & security updates. They’re a much better alternative to\nWordpress. Besides, they cost almost nothing to produce. You could spend some\ncash maintaining it, but the financial costs will never be above a few bucks.",[10,49,50],{},"So, in this article, I’ll show how you can set up a blog with Hugo. The blog\nwill have a CMS, will update itself & some more OP super powers to add along. So\nthen, without further adieu, let’s dive into setting it up as a Wordpress\nalternative.",[10,52,53],{},"But do note, having some prior programming knowledge can be a bonus point but is\nnot a prerequisite. You can follow along with the instructions suggested in this\narticle & you’ll be fine.",[55,56,58],"h3",{"id":57},"prerequisite-tools","Prerequisite Tools",[10,60,61,62,67,68,75],{},"The star of our article is ",[14,63,66],{"href":64,"rel":65},"https:\u002F\u002Fgohugo.io\u002F",[18],"Hugo",". This piece of software is\nwithout a doubt one of the\n",[14,69,72],{"href":70,"rel":71},"https:\u002F\u002Fjarmos.netlify.app\u002Fposts\u002Freviewing-popular-static-site-generators\u002F#hugo-the-fastest-static-site-generator-ever-created",[18],[20,73,74],{},"easiest to use","\nStatic Site Generator available.",[10,77,78,79,84],{},"Besides Hugo, we’ll also need a GitHub account to host the articles & other\ntools as well. One of those tools include\n",[14,80,83],{"href":81,"rel":82},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Factions",[18],"GitHub Actions",". Of the many\ncommunity-maintained GitHub Actions, we’ll be using a couple of them.",[10,86,87,88,23],{},"But no blog can be a Wordpress alternative without a Content Management System\n(CMS). So, to deliver onto our CMS needs, we’ll use the services from\n",[14,89,92],{"href":90,"rel":91},"https:\u002F\u002Fforestry.io\u002F",[18],"Forestry",[10,94,95,96,101],{},"And at last, we’ll use ",[14,97,100],{"href":98,"rel":99},"https:\u002F\u002Fwww.netlify.com\u002F",[18],"Netlify"," services to deliver\nthe generated static content. They use a global Content Delivery Network (CDN)\nto deliver the content to our audiences.",[10,103,104,105,110,111,116],{},"Optionally, we could use\n",[14,106,109],{"href":107,"rel":108},"https:\u002F\u002Fanalytics.google.com\u002Fanalytics\u002Fweb\u002F",[18],"Google Analytics (GA)"," for\ntracking needs. But if you’re a privacy concerned citizen, use\n",[14,112,115],{"href":113,"rel":114},"https:\u002F\u002Fwww.cloudflare.com\u002Fanalytics\u002F",[18],"Cloudflare Analytics"," instead.",[10,118,119],{},"So, to sum up, here’s the list of all the necessary tools & services we’ll be\nusing:",[121,122,123,127,130,137,140],"ul",{},[124,125,126],"li",{},"A Github repository to host the articles, themes & other files required by the\ntools we’ll be using.",[124,128,129],{},"A couple of GitHub Actions.",[124,131,132,133,136],{},"An account on ",[14,134,92],{"href":90,"rel":135},[18]," for the CMS.",[124,138,139],{},"A Netlify account to deliver the static content to our audiences.",[124,141,142],{},"And the optional Google\u002FCloudflare Analytics for tracking needs.",[10,144,145],{},"So, that said, ensure you’re set up with all the tools mentioned above & then we\ncan get started.",[55,147,149],{"id":148},"using-hugo-with-all-itsglory","Using Hugo (With All Its Glory)",[10,151,152,153,158],{},"As mentioned earlier, Hugo is without a doubt one of the easiest Static Site\nGenerators available to use. The fact that Hugo has\n",[14,154,157],{"href":155,"rel":156},"https:\u002F\u002Fgithub.com\u002Fgohugoio\u002Fhugo\u002Fstargazers",[18],"50K+ stargazers"," shows how useful\nit is!",[10,160,161],{},"So, without wasting any more time, let’s dive into seeing how to use Hugo.",[55,163,165],{"id":164},"installing-hugo","Installing Hugo",[10,167,168,169,174,175,180,181,186,187,192],{},"First things first, is to install Hugo on your local machine. Unlike other\nStatic Site Generators Hugo has no dependency! But generators like\n",[14,170,173],{"href":171,"rel":172},"https:\u002F\u002Fgetpelican.com\u002F",[18],"Pelican",", ",[14,176,179],{"href":177,"rel":178},"https:\u002F\u002Fwww.gatsbyjs.com\u002F",[18],"Gatsby"," and\u002For\n",[14,182,185],{"href":183,"rel":184},"https:\u002F\u002Fjekyllrb.com\u002F",[18],"Jekyll"," needs a local Python\u002FRuby runtime or a\nJavaScript environment. With Hugo, all you need is the\n",[14,188,191],{"href":189,"rel":190},"https:\u002F\u002Fgithub.com\u002Fgohugoio\u002Fhugo\u002Freleases",[18],"Hugo binary"," & you’re good to go.",[10,194,195,196,199,200,204,205,208],{},"The “ ",[20,197,198],{},"installation","” procedure is also pretty simple. You need to add the\nbinary to system ",[201,202,203],"code",{},"PATH"," & invoke the ",[201,206,207],{},"hugo"," command from anywhere in the\nTerminal.",[10,210,211,212,23],{},"Do note, editing each Operating System’s PATH is quite different. Hence, do take\na thorough look at the official\n",[14,213,216],{"href":214,"rel":215},"https:\u002F\u002Fgohugo.io\u002Fgetting-started\u002Finstalling\u002F",[18],"installation docs",[10,218,219,220,223],{},"Now ensure you installed Hugo by running the ",[201,221,222],{},"hugo version"," command on your CLI.\nIf everything works fine, you should see a similar output.",[10,225,226],{},"Output of “hugo version” Command",[55,228,230],{"id":229},"creating-yoursite","Creating Your Site",[10,232,233],{},"I must say, installing Hugo while easy, it isn’t the most fun part of the whole\nprocess. So, let’s get started with the fun parts.",[10,235,236,237,240,241,244,245,247,248,251],{},"You can generate a skeleton site (",[20,238,239],{},"which we’ll build upon soon",") with the\n",[201,242,243],{},"hugo new site ."," command. Notice the ",[201,246,23],{}," ( ",[20,249,250],{},"dot",") at the end of the command? It\ntells Hugo to generate the skeleton site in the current directory.",[10,253,254],{},"The command generates a simple set of files & folders. Each of them serves a\nspecific purpose for Hugo. Here’s what the directory structure looks like after\ngenerating them.",[10,256,257],{},"Hugo Directory Structure",[10,259,260,261,23],{},"There’s more to what Hugo generates as a skeleton site than what I can discuss\nin one blog. For more info, do take a brief look at the documentation on Hugo’s\n",[14,262,265],{"href":263,"rel":264},"https:\u002F\u002Fgohugo.io\u002Fgetting-started\u002Fdirectory-structure\u002F",[18],"project directory structure",[10,267,268],{},"Without delving into the details of the directory structure, let’s keep things\nminimal. That way, there’ll be room for further personalization. And you can\nstart delivering content at the earliest as well.",[55,270,272],{"id":271},"creating-content-the-actual-funstuff","Creating Content (The Actual Fun Stuff!)",[10,274,275],{},"As mentioned earlier using Hugo is drop-dead easy. Yet, any given Hugo project\ncan be as complicated as it needs to be. But regardless, you can start writing\ncontent right away, all you now need is;",[121,277,278,285,292],{},[124,279,280,281,284],{},"Download a theme under the ",[201,282,283],{},"themes"," directory.",[124,286,287,288,291],{},"Configure Hugo to generate your site with some site metadata for SEO needs in\nthe ",[201,289,290],{},"config.yml"," file.",[124,293,294,295,284],{},"Write content in Markdown under the ",[201,296,297],{},"content",[10,299,300],{},"It’s that simple!",[10,302,303,304,309,310,313,314,317],{},"Hugo boasts of some 300+ beautiful\n",[14,305,308],{"href":306,"rel":307},"https:\u002F\u002Fthemes.gohugo.io\u002F",[18],"community maintained themes",". You can download a\ntheme to your site’s ",[201,311,312],{},"theme"," directory & Hugo will use it to generate the\ncontents of your site. And the easiest way to install a theme is to use \" ",[20,315,316],{},"Git\nSubmodules"," \". That way you can ensure the themes are updated as & when the\ntheme authors pushes a commit to its repository.",[10,319,320,321,324],{},"Installing themes is also very easy. Running the\n",[201,322,323],{},"git submodule add \u003CDOWNLOAD-LINK> themes\u002F\u003CTHEME-NAME> --depth=1"," command is\nenough.",[10,326,327,328,330],{},"For SEO needs, you might also need site metadata. And Hugo takes care of it\nout-of-the-box. You’ve to configure Hugo with a ",[201,329,290],{}," file. And in that\nfile you include the necessary details for the metadata. Hugo uses those values\nto populate the metadata of your site.",[10,332,333],{},"And to get a general feel of what a config.yml file looks like, here’s an\nexample;",[10,335,336],{},"Example Hugo Config File",[10,338,339,340,342],{},"Do note, configuring the ",[201,341,290],{}," isn't limited to what I mentioned here.\nBased on the theme you're using, you might\u002Fmightn't have to extend on it.",[10,344,345],{},"And at last, the content directory where you store the Markdown files for your\narticles. You can organize your Markdown content into subdirectories for easier\nmaintenance & organization. For example, here’s how mine looks.",[10,347,348],{},"Example Hugo Contents Directory Structure",[10,350,351,352,357],{},"The ",[14,353,356],{"href":354,"rel":355},"https:\u002F\u002Fgohugo.io\u002Fcontent-management\u002Forganization\u002F",[18],"Content Organization","\nsection of the docs has more details on the topic. Do check it out for more\ninformation.",[10,359,360],{},"And with that information, you can start creating content right away.",[10,362,363,364,369],{},"Be sure to store all the articles in Markdown format under the content\ndirectory. And if you’re not familiar with Markdown, check out\n",[14,365,368],{"href":366,"rel":367},"http:\u002F\u002Fmarkdownguide.org\u002F",[18],"Markdown Guide",". Else read ahead to figure out how\nto use the Forestry CMS.",[10,371,372],{},"Now that you’ve started creating content, it’s time for your audience to read\nthem! And the next section is about delivering the content to our audiences..",[55,374,376],{"id":375},"deploying-theblog","Deploying the Blog",[10,378,379,380,383],{},"Unlike Wordpress sites, static sites don’t need a hosting provider (",[20,381,382],{},"or a\nserver","). This alleviates the surface area of potential security & maintenance\nmishaps. But without a server to host the content how do we deliver them to our\naudience?",[10,385,386],{},"This is where Netlify’s services come handy. They’ll deliver our static content\nover their global CDN. And their free tier services also come with some nifty\ngoodies. Some of those extra goodies include a domain, a build platform & many\nmore. But for reasons mentioned later, we won’t use all their services.",[10,388,389,390,395,396,400,401,406],{},"So, ensure you’ve created a ",[14,391,394],{"href":392,"rel":393},"https:\u002F\u002Frepo.new",[18],"new repo"," to host your site\ncontents & a ",[14,397,399],{"href":98,"rel":398},[18],"Netlify account"," to start with. You’ll\nneed to perform a one-time operation on the Netlify dashboard to create a new\nsite. Refer to the Netlify docs to know the\n",[14,402,405],{"href":403,"rel":404},"https:\u002F\u002Fdocs.netlify.com\u002Fsite-deploys\u002Fcreate-deploys\u002F#deploy-with-git",[18],"exact process","\nto do so.",[10,408,409,410,415,416,419],{},"Then push your fresh new site to the GitHub repo, you created. And that should\ntrigger a\n",[14,411,414],{"href":412,"rel":413},"https:\u002F\u002Fdocs.netlify.com\u002Fconfigure-builds\u002Fget-started\u002F",[18],"Netlify build operation",".\nYou can now view your website at an URL provided by Netlify ( ",[20,417,418],{},"you can change it\nthough"," 😉).",[10,421,422,423,426],{},"Now each time you write a new article or push some aesthetic changes to your\nsite, Netlify will trigger a build. While it works & is fine for most users,\nthere are certain downsides. One of them is the slow & unoptimized build timings\n( ",[20,424,425],{},"often taking over 2mins to complete the build","). And considering Netlify\nprovides only 300 minutes of build per month, it won’t be long before you run\nout of it.",[10,428,429],{},"Besides, that way you’re not utilizing Hugo’s full potential. Which is why we’ll\nuse some GitHub Actions instead. With it, we’ll deploy our site & automate some\nmonotonous tasks as well!",[10,431,432],{},"The next section delves deeper into why & how we can achieve such a feat.",[55,434,436],{"id":435},"setting-up-automation-a-cmsbackend","Setting Up Automation & a CMS Backend",[10,438,439,440,443],{},"Creating & deploying the site was easy & fun. But it doesn’t last long (",[20,441,442],{},"saying\nfrom personal experience","). More so, when you add the theme as a submodule. You\ncan expect frequent updates for it.",[10,445,446,447,452],{},"But thanks to ",[14,448,451],{"href":449,"rel":450},"https:\u002F\u002Fgithub.com\u002Fdependabot",[18],"GitHub’s Dependabot",", we can keep\nour theme(s) updated at all times.",[10,454,455],{},"There’s also the need for a Content Management System (CMS). What good is a\nWordpress Alternative, without a CMS, right? And we should also delegate the\nbuild process to GitHub Actions instead of Netlify. This is a more efficient way\nto deploy & maintain our site.",[10,457,458],{},"So that said, let’s list out the remaining features we need to work on & start\nworking on them one-by-one.",[121,460,461,464,467],{},[124,462,463],{},"Setup & configure Dependabot to keep all dependencies for our site updated.",[124,465,466],{},"Setup & use Forestry as the CMS backend.",[124,468,469],{},"Configure & delegate the build process to GitHub instead of Netlify.",[10,471,472],{},"GitHub’s Dependabot integration came as a godsend. Because of it, keeping\nproject dependencies up-to-date has never been easier. And guess what?\nDependabot can take care of Git Submodules as well! Which means your themes will\nstay updated as soon as its author pushes some changes to it.",[10,474,475,476,479,480,483,484,487],{},"And to configure Dependabot, you need a specific config file for it. This\nspecific file named ",[201,477,478],{},"dependabot.yml"," stays under the ",[201,481,482],{},".github"," directory (\n",[20,485,486],{},"create it if it doesn't exist yet",").",[10,489,490],{},"And this is how it should look like:",[10,492,493],{},"Dependabot Configurations for GitHub Actions & Submodules",[10,495,496],{},"With Dependabot configured, it’ll now look for updates every day at 0600 Hours\nUTC. And if there’s any, it’ll then open a PR with respective labels for GitHub\nActions & Git Submodules each.",[10,498,499,500,507],{},"But that’s pretty much the tip of the iceberg for Dependabot configuration. You\ncan find detailed\n",[14,501,504],{"href":502,"rel":503},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fgithub\u002Fadministering-a-repository\u002Fconfiguration-options-for-dependency-updates",[18],[20,505,506],{},"Dependabot Configuration Options","\nin the official docs.",[10,509,510],{},"With Dependabot set up, you no longer have to worry about manual update &\nmaintenance tasks.",[55,512,514],{"id":513},"setting-up-forestry-as-a-cmsbackend","Setting Up Forestry as a CMS Backend",[10,516,517,518,521,522,527],{},"No static blog can become a true ",[20,519,520],{},"Wordpress alternative"," without a CMS. And\nthat’s what makes Wordpress attractive to most users without any technical\nprowess. And as such, some users might not be comfortable writing their content\nin Markdown. For them a web-based\n",[14,523,526],{"href":524,"rel":525},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRich_Text_Format",[18],"Rich Text Format"," environment\nis what works best.",[10,529,530,531,536,537,540,541,546],{},"Hence, we’ll be using Forestry’s backend CMS services. There are alternatives\nlike ",[14,532,535],{"href":533,"rel":534},"https:\u002F\u002Fwww.contentful.com\u002F",[18],"Contentful"," (",[20,538,539],{},"one of the most popular one",") &\n",[14,542,545],{"href":543,"rel":544},"https:\u002F\u002Fwww.netlifycms.org\u002F",[18],"Netlify CMS",". But, from personal experience I\nfound Forestry to be the most easy to setup & configure.",[10,548,549],{},"The things you can do with Hugo & Forestry is beyond the scope of this article.\nI could write another full-blown article on this topic alone. So, keeping this\narticle rather short & act as a guide for interested readers, here’s a gist of\nhow to set up Forestry.",[551,552,553,560,563],"ol",{},[124,554,555,556,559],{},"Ensure you’ve Forestry account & your site is “",[20,557,558],{},"added","” to their services.",[124,561,562],{},"Configure the settings of the CMS from the Admin panel.",[124,564,565,566,569,570,487],{},"Login to your site’s Admin panel by navigating to ",[201,567,568],{},"\u003CYOUR-SITE-URL\u002Fadmin>"," &\nstart writing your content in Rich Text (",[20,571,572],{},"you can write in Markdown as well\nif you prefer",[10,574,575,576,581],{},"Forestry has a ",[14,577,580],{"href":578,"rel":579},"https:\u002F\u002Fforestry.io\u002Fdocs\u002Fguides\u002Fdeveloping-with-hugo\u002F",[18],"guide"," to\nset up their CMS with Hugo. Do check it out as well!",[55,583,585],{"id":584},"automation-delegating-build-task-togithub","Automation & Delegating Build Task to GitHub",[10,587,588,589,592],{},"While there’s nothing wrong in using Netlify to build the site, it has some\nlimitations. A major one being, it’s slow & unoptimized build times (",[20,590,591],{},"it took\nover 2mins for my site to build","). And with Netlify’s limited 300 build mins per\nmonth, it won’t take long before the free quota is used up.",[10,594,595,596,487],{},"So, to make the most out of Hugo’s potential, you should use GitHub Actions.\nWith it, you can build your site in \u003C1 mins ( ",[20,597,598],{},"usually takes 20–40 secs on\naverage for mine",[10,600,601],{},"Besides, compared to Netlify, GitHub provides 2000 build mins per month! So,\ncoupled with less build times & a huge build mins quota, you won’t have to worry\nabout builds not triggering 😊.",[10,603,604],{},"Also, having all tools under one roof makes maintenance much easier to handle.\nSo, let’s peruse through what we need to do automate some of the build tasks;",[551,606,607],{},[124,608,609,610,613],{},"First thing first is to ensure you’ve a ",[201,611,612],{},"netlify.toml"," config file under the\nroot directory. The Netlify GitHub Action will use it to deploy the website\nto Netlify's CDN. The file usually looks something like the following;",[10,615,616],{},"Example Netlify Configurations",[10,618,619,620,625],{},"There are more details about the file in the\n",[14,621,624],{"href":622,"rel":623},"https:\u002F\u002Fdocs.netlify.com\u002Fconfigure-builds\u002Ffile-based-configuration",[18],"Netlify Config file","\ndocumentations.",[10,627,628,629,632,633,635,636,291],{},"2. To automate some more monotonous tasks, add a ",[201,630,631],{},"build.yml"," workflow file.\nPlace it under the ",[201,634,482],{}," directory. And add the following content to the\n",[201,637,631],{},[10,639,640],{},"Automated Netlify Build & Deployment with GitHub Actions",[10,642,643],{},"This file instructs GitHub Actions to use two workflows for deployment tasks.\nIt’ll set up Hugo, generate the static content & deploy it to Netlify. Further,\nit’s triggered on every push & PR event.",[10,645,646],{},"4. And finally, the best piece of automation fun. Automating PR merges opened\nby Dependabot.",[10,648,649,650,653,654,657,658,660],{},"Remember the ",[201,651,652],{},"automerge"," labels in the Dependabot config file? This is where\nthey come handy. We'll use\n",[201,655,656],{},"[pascalgn\u002Fautomerge-action](https:\u002F\u002Fgithub.com\u002Fpascalgn\u002Fautomerge-action)"," to\nmerge any Pull Requests with the label ",[201,659,652],{},". No need for manual\nintervention.",[10,662,663],{},"And guess what? Dependabot is also configured to update every PR it opens with\nthat label! 😆",[10,665,666],{},"And thanks to all the automation features, you no longer have to even open the\nrepository ever again! Automation FTW indeed! 🤣",[55,668,670],{"id":669},"final-words","Final Words",[10,672,673],{},"Phew, that was quite a long read for a tutorial! And if you read it till the\nend, then thanks for being thorough with it, much appreciated.",[10,675,676,677,680],{},"You might’ve also noticed, the article isn’t as comprehensive. Yet it touches\nupon all the optimal techniques & tools used to maintain a programming blog. So,\nI hope the information I shared through this article was enough to get you\nstarted with your blog as well! If you do so, reach out to me & say “ ",[20,678,679],{},"Hi!\nHere’s my blog”"," over social media and\u002For email. And I might give away a\nshoutout for you.",[10,682,683,684,689,690,695,696,701],{},"Besides, my blog is ",[14,685,688],{"href":686,"rel":687},"https:\u002F\u002Fgithub.com\u002FJarmos-san\u002Fblog",[18],"open-sourced","! ❤ So, if\nyou stumble across a roadblock, check out how I maintain mine. Or, feel free to\nopen an ",[14,691,694],{"href":692,"rel":693},"https:\u002F\u002Fgithub.com\u002FJarmos-san\u002Fblog\u002Fissues\u002Fnew\u002Fchoose",[18],"Issue","\u002F\n",[14,697,700],{"href":698,"rel":699},"https:\u002F\u002Fgithub.com\u002FJarmos-san\u002Fblog\u002Fdiscussions",[18],"Discussion"," thread.",[10,703,704],{},"That said, I look forward to how you use Hugo to share your amazing content with\nthe rest of the world!",[10,706,707,710,717],{},[20,708,709],{},"Originally published at",[14,711,714],{"href":712,"rel":713},"https:\u002F\u002Fjarmos.netlify.app\u002Fposts\u002Fblogging-with-hugo-as-an-wordpress-alternative\u002F",[18],[20,715,716],{},"https:\u002F\u002Fjarmos.netlify.app",[20,718,719],{},"on February 21, 2021.",{"title":721,"searchDepth":722,"depth":722,"links":723},"",2,[724,726,727,728,729,730,731,732,733,734],{"id":57,"depth":725,"text":58},3,{"id":148,"depth":725,"text":149},{"id":164,"depth":725,"text":165},{"id":229,"depth":725,"text":230},{"id":271,"depth":725,"text":272},{"id":375,"depth":725,"text":376},{"id":435,"depth":725,"text":436},{"id":513,"depth":725,"text":514},{"id":584,"depth":725,"text":585},{"id":669,"depth":725,"text":670},{"url":736,"alt":737},"https:\u002F\u002Fik.imagekit.io\u002Fjarmos\u002Fcreate-overpowered-hugo-blog.png?updatedAt=1702974989343","Create an Overpowered Hugo blog (as an WordPress Alternative)","Discover the power of blogging with Hugo! Explore a WordPress alternative offering ease and efficiency. Learn to set up Hugo, leverage GitHub Actions for automation, and utilize Forestry as a CMS. Elevate your blog with Hugo’s simplicity and GitHub’s power.","md",{},true,"\u002Fblogs\u002Fcreate-hugo-blog-as-an-wordpress-alternative","2021-02-21",{"title":5,"description":738},{"loc":742},"blogs\u002Fcreate-hugo-blog-as-an-wordpress-alternative","evAjcOMEHb1g3Cz2Z2i0LDNGeDTptuU2bSIZyRCcCx4",1788604450165]