First commit

This commit is contained in:
2025-04-07 20:46:15 +02:00
commit e0a7f6abe9
96 changed files with 3912 additions and 0 deletions

1
.envrc Normal file
View File

@@ -0,0 +1 @@
use flake

6
.gitmodules vendored Normal file
View File

@@ -0,0 +1,6 @@
[submodule "themes/terminal"]
path = themes/terminal
url = https://github.com/panr/hugo-theme-terminal.git
[submodule "themes/ficurinia"]
path = themes/ficurinia
url = https://gitlab.com/gabmus/hugo-ficurinia.git

0
.hugo_build.lock Normal file
View File

5
archetypes/default.md Normal file
View File

@@ -0,0 +1,5 @@
+++
date = '{{ .Date }}'
draft = true
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
+++

View File

@@ -0,0 +1,36 @@
+++
date = '2025-04-07T19:16:28+02:00'
title = 'Building my website in Hugo'
tags = [ 'website', 'hosting' ]
+++
I always wanted a website/blog to write articles about what I like, so today I decided to make one!
After buying a domain and setting up the server I had just to decide what to write the website with.
## Hugo
![hugo-logo](https://gohugo.io/images/hugo-logo-wide.svg)
As a tech stack I wanted something simple and easy to mantain,
[Hugo](https://gohugo.io/) makes everything so easy and painless that it is too good to be true.
Just install it and then write in the terminal
```bash
hugo new site <website-name> && cd <website-name>
```
to generate the template, install a good-looking theme from the [themes page](https://themes.gohugo.io/themes/) on the Hugo website, in my case Ficurinia
```bash
git clone https://github.com/patrickacciaioli/ficurinia themes/ficurinia
```
add the following line inside of `hugo.toml` with the greatest editor ever lived (Vim)
```toml
theme = "ficurinia"
```
Start the server with
```bash
hugo server
```
and you are ready to go. A complete blog in seconds.
## Conclusion
Building a personal website with Hugo was faster and easier than I could have ever done in plain HTML. With minimal setup and maximum flexibility, Hugo proved to be the perfect choice for my blog. Now, I can focus on writing posts worrying about the infamous [Hypertext Markup Language](https://en.wikipedia.org/wiki/HTML).

25
flake.lock generated Normal file
View File

@@ -0,0 +1,25 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1739736696,
"narHash": "sha256-zON2GNBkzsIyALlOCFiEBcIjI4w38GYOb+P+R4S8Jsw=",
"rev": "d74a2335ac9c133d6bbec9fc98d91a77f1604c1f",
"revCount": 754461,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.754461%2Brev-d74a2335ac9c133d6bbec9fc98d91a77f1604c1f/01951426-5a87-7b75-8413-1a0d9ec5ff04/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/NixOS/nixpkgs/0.1.%2A.tar.gz"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

32
flake.nix Normal file
View File

@@ -0,0 +1,32 @@
{
description = "A Nix-flake-based Go 1.22 development environment";
inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1.*.tar.gz";
outputs = { self, nixpkgs }:
let
goVersion = 22; # Change this to update the whole stack
supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f {
pkgs = import nixpkgs {
inherit system;
overlays = [ self.overlays.default ];
};
});
in
{
overlays.default = final: prev: {
go = final."go_1_${toString goVersion}";
};
devShells = forEachSupportedSystem ({ pkgs }: {
default = pkgs.mkShell {
packages = with pkgs; [
go
hugo
];
};
});
};
}

5
go.mod Normal file
View File

@@ -0,0 +1,5 @@
module patrickcanal.xyz
go 1.22.12
require github.com/panr/hugo-theme-terminal/v4 v4.2.1 // indirect

2
go.sum Normal file
View File

@@ -0,0 +1,2 @@
github.com/panr/hugo-theme-terminal/v4 v4.2.1 h1:HGQdOolUNFYMbHrguEbkGU8HWKv4qSAV/n1egSGSnvs=
github.com/panr/hugo-theme-terminal/v4 v4.2.1/go.mod h1:W0sFodm5ipL5gjRqOFjg4zD+euoQ8hCtyDDtqSpihxM=

24
hugo.toml Normal file
View File

@@ -0,0 +1,24 @@
baseURL = "https://patrickcanal.xyz/"
languageCode = "en-us"
title = "Patrick Canal"
theme = "ficurinia"
copyright = "Patrick Canal"
[params]
author = "Patrick Canal"
logo = "logo.svg"
svgicon = "logo.svg"
enableJumbotron = true
infiniteScrolling = true
[menu]
[[menu.icons]]
identifier = "github"
name = "Github"
url = "https://github.com/Superredstone"
weight = 10
[outputs]
home = ["HTML", "JSON"]

189
public/404.html Normal file
View File

@@ -0,0 +1,189 @@
<!DOCTYPE html>
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<link
rel="icon"
href='logo.svg'
type="image/svg+xml"
/>
<title>
404 Page not found &ndash;
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="Patrick Canal" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title"
content='Patrick Canal' />
<meta property="og:type" content="blog" />
<meta property="og:image"
content='http://localhost:1313/img/icon.svg' />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/404.html" />
<meta name="twitter:title"
content='Patrick Canal' />
<meta name="twitter:image"
content='http://localhost:1313/img/icon.svg' />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="https://github.com/Superredstone">
&#xf09b;
<span>
Github
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<article>
<h1>
This is not the page you were looking for
</h1>
</article>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
public/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

3
public/bundle.min.js vendored Normal file
View File

@@ -0,0 +1,3 @@
(()=>{var t=document.querySelector(".container"),e=document.querySelectorAll(".menu");document.body.addEventListener("click",()=>{e.forEach(e=>{e.classList.contains("open")&&e.classList.remove("open")})}),window.addEventListener("resize",()=>{e.forEach(e=>{e.classList.remove("open")})}),e.forEach(n=>{const o=n.querySelector(".menu__trigger"),s=n.querySelector(".menu__dropdown");o.addEventListener("click",o=>{o.stopPropagation(),n.classList.contains("open")?n.classList.remove("open"):(e.forEach(e=>e.classList.remove("open")),n.classList.add("open")),s.getBoundingClientRect().right>t.getBoundingClientRect().right&&(s.style.left="auto",s.style.right=0)}),s.addEventListener("click",e=>e.stopPropagation())})})(),(()=>{var e=document.querySelectorAll(".chroma code[data-lang]");for(const n of e){const s=n.parentElement,o=n.innerText.split(`
`).filter(Boolean).join(`
`),t=document.createElement("div"),i=n.dataset.lang;if(t.classList.add("code-title"),t.innerText=i,navigator.clipboard!==void 0){const e=document.createElement("button");e.classList.add("copy-button"),e.innerText="Copy",e.addEventListener("click",()=>{e.innerText="Copied",setTimeout(()=>{e.innerText="Copy"},1e3),navigator.clipboard.writeText(o)}),t.append(e)}s.closest(".highlight").prepend(t)}})()

View File

@@ -0,0 +1,203 @@
<!DOCTYPE html>
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link href="http://localhost:1313/categories/index.xml" rel="alternate" type="application/rss+xml" title="Patrick Canal" />
<link href="http://localhost:1313/categories/index.xml" rel="feed" type="application/rss+xml" title="Patrick Canal" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<link
rel="icon"
href='logo.svg'
type="image/svg+xml"
/>
<title>
Categories &ndash;
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="Patrick Canal" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title"
content='Patrick Canal' />
<meta property="og:type" content="blog" />
<meta property="og:image"
content='http://localhost:1313/img/icon.svg' />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/categories/" />
<meta name="twitter:title"
content='Patrick Canal' />
<meta name="twitter:image"
content='http://localhost:1313/img/icon.svg' />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="https://github.com/Superredstone">
&#xf09b;
<span>
Github
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<h2>
Categories
</h2>
<ul class="list">
</ul>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/feed_style.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="https://www.rssboard.org/media-rss">
<channel>
<title>Categories on Patrick Canal</title>
<link>http://localhost:1313/categories/</link>
<description>Recent content in Categories on Patrick Canal</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<copyright>Patrick Canal</copyright><atom:link href="http://localhost:1313/categories/index.xml" rel="self" type="application/rss+xml" /><icon>http://localhost:1313/logo.svg</icon>
</channel>
</rss>

View File

@@ -0,0 +1 @@
.button-container{display:table;margin-left:auto;margin-right:auto}button,.button,a.button{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:8px 18px;text-decoration:none;text-align:center;font:inherit;font-weight:700;appearance:none;cursor:pointer;outline:none}button.outline,.button.outline,a.button.outline{background:0 0;box-shadow:none;padding:8px 18px}button.outline :hover,.button.outline :hover,a.button.outline :hover{transform:none;box-shadow:none}button.link,.button.link,a.button.link{background:0 0;font-size:var(--font-size)}button.small,.button.small,a.button.small{font-size:calc(var(--font-size) * .8)}button.wide,.button.wide,a.button.wide{min-width:200px;padding:14px 24px}a.button.inline{background:0 0;color:var(--accent);padding:initial;margin:initial;border:initial;font-weight:initial;text-decoration:none}a.button.inline:active,a.button.inline:hover{background:0 0}a.read-more,a.read-more:hover,a.read-more:active{display:inline-flex;border:none;background:0 0;box-shadow:none;padding:0;max-width:100%;text-decoration:none}

View File

@@ -0,0 +1 @@
:root{--code-border:color-mix(in srgb, var(--foreground) 10%, transparent)}pre:not(.chroma){margin:20px 0;padding:10px}pre.chroma{margin:0;padding:10px 0;color:var(--foreground)}pre code{color:var(--foreground);border:none}code{color:var(--accent)}.highlight{position:relative;margin:20px 0;border:1px solid var(--code-border)}.highlight pre{border:none}.code-title{display:flex;align-items:center;justify-content:space-between;background:color-mix(in srgb,var(--foreground) 5%,transparent);border-bottom:1px solid var(--code-border);color:var(--comment);text-transform:uppercase;font-size:calc(var(--font-size) * .8);padding:6px 10px;line-height:1}.copy-button{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;text-decoration:none;text-align:center;font-size:13px;font-weight:500;border:1px solid color-mix(in srgb,var(--accent) 15%,transparent);appearance:none;cursor:pointer;outline:none}.code-title .copy-button{z-index:1;background:color-mix(in srgb,var(--foreground) 5%,var(--background))}.code-title:hover .copy-button{display:inline-block}.code-title .copy-button:hover{background:color-mix(in srgb,var(--accent) 10%,var(--background))}.collapsable-code{position:relative;width:100%;margin:20px 0;border:1px solid var(--accent);.highlight { margin: 0; }}.collapsable-code__title{display:inline-flex;align-items:center;flex:1;color:var(--accent);padding:3px 10px;font-size:calc(var(--font-size) * .9);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.collapsable-code__language{color:var(--accent);border:1px solid var(--accent);border-bottom:none;text-transform:uppercase;padding:3px 10px}.collapsable-code summary{color:var(--accent);padding:0 10px;cursor:pointer}.collapsable-code summary:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}.collapsable-code pre{margin-top:0}.collapsable-code pre::first-line{line-height:0}

View File

@@ -0,0 +1 @@
@font-face{font-family:fira code;font-style:normal;font-weight:300 700;font-display:swap;src:url(../fonts/FiraCode-LatinExt.woff2)format('woff2');unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:fira code;font-style:normal;font-weight:300 700;font-display:swap;src:url(../fonts/FiraCode-Latin.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

View File

@@ -0,0 +1 @@
.footer{padding:40px 0;flex-grow:0;opacity:.65}.footer__inner{display:flex;align-items:center;justify-content:space-between;margin:0;max-width:100%}.footer a{color:inherit}.footer .copyright{display:flex;flex-flow:row wrap;flex:1;align-items:center;justify-content:center}.footer .copyright--user{margin:auto;text-align:center}.footer .copyright>*:first-child:not(:only-child){margin-right:10px}.footer .copyright span{white-space:nowrap}@media(max-width:900px){.footer__inner{flex-direction:column}}

View File

@@ -0,0 +1 @@
body .gist .blob-num,body .gist .blob-code-inner{border:none}

View File

@@ -0,0 +1 @@
.header{display:flex;flex-direction:column;position:relative}.header__inner{display:flex;align-items:center;justify-content:space-between}.header__logo{display:flex;flex:1}.header__logo::after{content:"";background:repeating-linear-gradient(90deg,var(--accent),var(--accent) 2px,transparent 0,transparent 10px);display:block;width:100%;right:10px}.header__logo a{flex:none;max-width:100%;text-decoration:none}.logo{display:flex;align-items:center;text-decoration:none;background:var(--accent);color:var(--background);font-weight:700;padding:5px 10px}@media print{.header{display:none}}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.navigation-menu{display:flex;align-items:flex-start;justify-content:space-between;margin:20px 1px}.navigation-menu__inner{display:flex;flex:1;flex-wrap:wrap;list-style:none;margin:0;padding:0}.navigation-menu__inner>li{flex:none;margin-bottom:10px;white-space:nowrap}.navigation-menu__inner>li:not(:last-of-type){margin-right:20px}.navigation-menu .spacer{flex-grow:1!important}.menu{display:flex;flex-direction:column;position:relative;list-style:none;padding:0;margin:0}.menu__trigger{margin-right:0!important;color:var(--accent);user-select:none;cursor:pointer}.menu__dropdown{display:none;flex-direction:column;position:absolute;background:var(--background);box-shadow:0 10px var(--background),-10px 10px var(--background),10px 10px var(--background);color:var(--accent);border:2px solid var(--accent);margin:0;padding:10px;top:10px;left:0;list-style:none;z-index:99}.open .menu__dropdown{display:flex}.menu__dropdown>li{flex:none}.menu__dropdown>li:not(:last-of-type){margin-bottom:10px}.menu__dropdown>li a{display:flex;padding:5px}.menu--mobile .menu__trigger{color:var(--accent);border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0!important;position:relative;cursor:pointer;display:none}.menu--mobile li{flex:none}.menu--mobile li:not(:last-of-type){margin-bottom:10px}.menu--language-selector .menu__trigger{color:var(--accent);border:2px solid;margin-left:5px;height:100%;padding:3px 8px;margin-bottom:0!important;position:relative;cursor:pointer}.menu--language-selector .menu__dropdown{left:auto;right:0}@media(max-width:684px){.navigation-menu{margin:0}.navigation-menu__inner{flex-direction:column;align-items:flex-start;padding:0}.navigation-menu__inner li{margin:0;padding:5px}.menu--desktop{display:none}.menu--mobile .menu__trigger{display:block}.menu--mobile .menu__dropdown{left:auto;right:0}.menu--language-selector .menu__trigger{display:none}}

View File

@@ -0,0 +1 @@
.pagination{margin-top:50px}.pagination__title{display:flex;text-align:center;position:relative;margin:100px 0 20px}.pagination__title-h{text-align:center;margin:0 auto;padding:5px 10px;background:var(--background);color:color-mix(in srgb var(--foreground) 30%,transparent);font-size:calc(var(--font-size) * .8);text-transform:uppercase;text-decoration:none;letter-spacing:.1em;z-index:1}.pagination__title hr{position:absolute;left:0;right:0;width:100%;margin-top:15px;z-index:0}.pagination__buttons{display:flex;align-items:center;justify-content:center;flex-flow:row wrap;gap:10px}.pagination__buttons a{display:inline-flex;max-width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-decoration:none}.button{position:relative;display:inline-flex;align-items:center;justify-content:center;font-size:inherit;padding:0;appearance:none}.button a{display:flex;justify-content:center;flex:1;padding:8px 16px}.button__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.next .button__icon{margin-left:8px}.prev .button__icon{margin-right:8px}@media print{.pagination{display:none}}

View File

@@ -0,0 +1 @@
.index-content{margin:25px 0}.framed{border:1px solid var(--accent);padding:20px}.framed *:first-child{margin-top:0}.framed *:last-child{margin-bottom:0}.posts{width:100%}.post{width:100%;text-align:left;padding:30px 0}.post:not(:last-of-type){border-bottom:1px solid color-mix(in srgb,var(--foreground) 10%,transparent)}.post-meta{font-size:inherit;margin-bottom:10px;color:color-mix(in srgb,var(--foreground) 65%,transparent)}.post-meta>*:not(:first-child)::before{content:"::";display:inline-block;margin:0 8px}.post-title{position:relative;color:var(--accent);margin-top:0!important;margin-bottom:15px!important;padding-bottom:15px;border-bottom:3px dotted var(--accent);text-decoration:none!important}.post-title::after{content:"";position:absolute;bottom:2px;display:block;width:100%;border-bottom:3px dotted var(--accent)}.post-title a{text-decoration:none}.post-tags{display:block;margin-bottom:20px;font-size:inherit;color:var(--accent)}.table-of-contents{margin:40px 0}.post-content{margin-top:25px}.post-cover{margin:25px 0}.post ul{list-style:none}.post ul li:not(:empty)::before{content:"-";position:absolute;left:-20px;color:var(--accent)}.post--regulation h1{justify-content:center}.post--regulation h2{justify-content:center;margin-bottom:10px}.post--regulation h2+h2{margin-top:-10px;margin-bottom:20px}.hanchor{position:absolute;color:var(--accent);text-decoration:none;margin-left:10px;visibility:hidden}h1:hover .hanchor,h2:hover .hanchor,h3:hover .hanchor,h4:hover .hanchor,h5:hover .hanchor,h6:hover .hanchor{visibility:visible}.footnotes{color:color-mix(in srgb,var(--foreground) 50%,transparent)}.footnotes hr{background:color-mix(in srgb,var(--foreground) 50%,transparent)}@media(max-width:684px){.post-cover{padding:10px;border-width:10px}}

13
public/css/styles.css.map Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
:root{--first-tone:var(--accent);--second-tone:color-mix(in srgb, var(--accent) 70%, transparent);--comment:color-mix(in srgb, var(--foreground) 50%, transparent)}.bg{}.chroma{overflow:auto}.chroma .x{}.chroma .err{}.chroma .cl{}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{width:100%;vertical-align:top;padding:0;margin:0;border:0}.chroma .lntd:first-child{width:auto}.chroma .lntd code{display:grid}.chroma .lntable{width:100%;border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:color-mix(in srgb,var(--foreground) 5%,transparent)!important}.chroma .lnt{color:var(--comment);white-space:pre;-webkit-user-select:none;user-select:none;padding:0 10px}.chroma .ln{color:var(--comment);white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.8em;padding:0 .4em 0 0}.chroma .line{display:flex;padding:0 10px}.chroma .k{color:var(--second-tone)}.chroma .kc{color:var(--second-tone)}.chroma .kd{color:var(--second-tone)}.chroma .kn{color:var(--second-tone)}.chroma .kp{color:var(--second-tone)}.chroma .kr{color:var(--second-tone)}.chroma .kt{color:var(--second-tone)}.chroma .n{color:var(--first-tone)}.chroma .na{color:var(--second-tone)}.chroma .nb{color:var(--first-tone)}.chroma .bp{color:var(--first-tone)}.chroma .nc{color:var(--foreground)}.chroma .no{color:var(--first-tone)}.chroma .nd{color:var(--first-tone)}.chroma .ni{color:var(--first-tone)}.chroma .ne{color:var(--first-tone)}.chroma .nf{color:var(--first-tone)}.chroma .fm{color:var(--first-tone)}.chroma .nl{color:var(--first-tone)}.chroma .nn{color:var(--first-tone)}.chroma .nx{color:var(--first-tone)}.chroma .py{color:var(--first-tone)}.chroma .nt{color:var(--first-tone)}.chroma .nv{color:var(--first-tone)}.chroma .vc{color:var(--first-tone)}.chroma .vg{color:var(--first-tone)}.chroma .vi{color:var(--first-tone)}.chroma .vm{color:var(--first-tone)}.chroma .l{}.chroma .ld{}.chroma .s{color:var(--foreground)}.chroma .sa{color:var(--foreground)}.chroma .sb{color:var(--foreground)}.chroma .sc{color:var(--foreground)}.chroma .dl{color:var(--foreground)}.chroma .sd{color:var(--foreground)}.chroma .s2{color:var(--foreground)}.chroma .se{color:var(--foreground)}.chroma .sh{color:var(--foreground)}.chroma .si{color:var(--foreground)}.chroma .sx{color:var(--foreground)}.chroma .sr{color:var(--foreground)}.chroma .s1{color:var(--foreground)}.chroma .ss{color:var(--foreground)}.chroma .m{color:var(--first-tone)}.chroma .mb{color:var(--first-tone)}.chroma .mf{color:var(--first-tone)}.chroma .mh{color:var(--first-tone)}.chroma .mi{color:var(--first-tone)}.chroma .il{color:var(--first-tone)}.chroma .mo{color:var(--first-tone)}.chroma .o{color:var(--foreground)}.chroma .ow{color:var(--foreground)}.chroma .p{color:var(--foreground)}.chroma .c{color:var(--comment)}.chroma .ch{color:var(--comment)}.chroma .cm{color:var(--comment)}.chroma .c1{color:var(--comment)}.chroma .cs{color:var(--comment)}.chroma .cp{color:var(--comment)}.chroma .cpf{color:var(--comment)}.chroma .g{}.chroma .gd{color:var(--first-tone)}.chroma .ge{}.chroma .gr{}.chroma .gh{}.chroma .gi{color:var(--second-tone)}.chroma .go{}.chroma .gp{}.chroma .gs{}.chroma .gu{}.chroma .gt{}.chroma .gl{}.chroma .w{}.chroma .language-php .cp{color:var(--foreground)}

View File

@@ -0,0 +1,2 @@
/* Placeholder file for your custom settings. */
/* You can get the color scheme variables from https://panr.github.io/terminal-css/ */

View File

@@ -0,0 +1 @@
.terms h3{font-size:initial}.terms ul{list-style:none}.terms ul li a{color:var(--accent)}.terms ul li:not(:empty)::before{content:"-";position:absolute;left:-20px;color:var(--accent)}

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
public/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

3
public/favicon.svg Normal file
View File

@@ -0,0 +1,3 @@
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<path fill="#242629" d="M32.5,-53.5C46.5,-48.2,65.3,-48.4,69.4,-40.4C73.5,-32.4,62.9,-16.2,58.8,-2.3C54.8,11.5,57.3,23,52.6,30.1C48,37.1,36.2,39.8,26.3,48.2C16.3,56.7,8.2,70.9,0.2,70.6C-7.8,70.3,-15.6,55.4,-16.1,41.5C-16.6,27.6,-9.8,14.7,-12.4,7.9C-14.9,1.2,-26.8,0.6,-39.2,-7.2C-51.7,-14.9,-64.7,-29.9,-63.2,-38.6C-61.8,-47.3,-46,-49.8,-33.1,-55.8C-20.1,-61.8,-10.1,-71.2,-0.4,-70.5C9.2,-69.8,18.5,-58.9,32.5,-53.5Z" transform="translate(100 100)" />
</svg>

After

Width:  |  Height:  |  Size: 524 B

84
public/feed_style.xsl Normal file
View File

@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><xsl:value-of select="/rss/channel/title"/> RSS Feed</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
<meta charset="UTF-8"/>
<link type="text/css" rel="stylesheet" href="http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css" integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv+4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<style>
.aboutfeeds {
margin: 24px 0; padding: 12px;
border: 2px solid var(--default_accent);
background-color: var(--default_hl_bg)
}
.head {
display: flex;
flex-direction: row;
align-items: center;
}
.logo {
width: 50px;
max-height: 50px;
border-radius: 5px;
display: block;
margin-right: 10px;
}
.rssLogo {
display: block;
margin-right: 10px;
}
header h1 {
display: flex;
flex-direction: row;
align-items: center;
}
</style>
</head>
<body>
<header>
<h1>
<svg class="rssLogo" width="32" height="32" version="1.1" viewBox="0 0 32 32"
xmlns="http://www.w3.org/2000/svg"
>
<path fill="#ff7800"
d="M 4.9970764,0 H 26.997124 C 29.767161,0 31.9971,2.2300144 31.9971,4.9999764 V 27.000024 C 31.9971,29.770061 29.767086,32 26.997124,32 H 4.9970764 C 2.2270388,32 -0.0029,29.769986 -0.0029,27.000024 V 4.9999764 C -0.0029,2.2299388 2.2271144,0 4.9970764,0 Z"
/>
<path fill="#ffffff"
d="m 10.652345,21.357209 q 0.794754,0.795468 0.794754,1.931828 0,1.120137 -0.794754,1.915672 -0.7947706,0.795468 -1.9301364,0.795468 -1.1353653,0 -1.930136,-0.795468 -0.7947708,-0.795467 -0.7947708,-1.915672 0,-1.136377 0.7947708,-1.931828 0.7947707,-0.811691 1.930136,-0.811691 1.1353658,0 1.9301364,0.811691 z m 8.077348,3.668942 q 0.01682,0.405854 -0.243305,0.68182 -0.259516,0.292205 -0.664997,0.292205 h -1.913994 q -0.373047,0 -0.632562,-0.22728 -0.243306,-0.2435 -0.259515,-0.584427 -0.324402,-3.263021 -2.643912,-5.56829 Q 10.068158,17.298754 6.8243058,16.990274 6.4674686,16.957811 6.2241796,16.714291 5.9971,16.454549 5.9971,16.097399 v -1.915673 q 0,-0.422077 0.2919482,-0.681819 0.2433052,-0.22728 0.6163522,-0.22728 h 0.081045 q 2.2544878,0.178576 4.3307416,1.136377 2.076086,0.957803 3.681871,2.581269 1.621977,1.623399 2.579007,3.701423 0.97319,2.061749 1.151609,4.334538 z m 7.266385,0.01614 q 0.01682,0.405853 -0.243305,0.681819 -0.259516,0.275984 -0.665013,0.275984 h -2.027493 q -0.356836,0 -0.632578,-0.243502 -0.275724,-0.243504 -0.29195,-0.600637 -0.16226,-3.051983 -1.427332,-5.811809 -1.26514,-2.759827 -3.292615,-4.772772 Q 15.404609,12.542104 12.6472,11.275872 9.9061004,9.9933838 6.8567915,9.8310488 6.4999709,9.8148927 6.2404563,9.5550662 5.9971503,9.2953236 5.9971503,8.9219502 V 6.8926809 q 0,-0.3896138 0.2919481,-0.6493564 Q 6.5324037,5.9998227 6.905451,5.9998227 h 0.048594 q 3.730464,0.1948173 7.120435,1.7207897 3.406113,1.5097508 6.033714,4.1558116 2.660054,2.629906 4.168482,6.039004 1.524655,3.409099 1.719283,7.126678 z"
/>
</svg>
<xsl:value-of select="/rss/channel/title"/>
</h1>
<div class="aboutfeeds">
<p>This is a web feed, also known as an RSS feed. <strong>Subscribe</strong> by copying the URL into your RSS reader.</p>
</div>
<div class="head">
<div class="avatar">
<img class="logo" src="logo.svg" alt="Site Logo"/>
</div>
<div class="description">
<p><xsl:value-of select="/rss/channel/description"/></p>
<p><a hreflang="en"><xsl:attribute name="href"><xsl:value-of select="/rss/channel/link"/></xsl:attribute>Visit Website &#x2192;</a></p>
</div>
</div>
</header>
<div id="content">
<main>
<h2>📄 Recent Posts</h2>
<xsl:for-each select="/rss/channel/item">
<article>
<h3><a target="_blank"><xsl:attribute name="href"><xsl:value-of select="link"/></xsl:attribute><xsl:value-of select="title"/></a></h3>
<footer>Published: <time><xsl:value-of select="pubDate" /></time></footer>
</article>
</xsl:for-each>
</main>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

Binary file not shown.

Binary file not shown.

330
public/index.html Normal file
View File

@@ -0,0 +1,330 @@
<!DOCTYPE html>
<html class="home" lang="en-us"><head>
<meta name="generator" content="Hugo 0.143.1"><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<link
rel="icon"
href='logo.svg'
type="image/svg+xml"
/>
<title>
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="Patrick Canal" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title"
content='Patrick Canal' />
<meta property="og:type" content="blog" />
<meta property="og:image"
content='http://localhost:1313/img/icon.svg' />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/" />
<meta name="twitter:title"
content='Patrick Canal' />
<meta name="twitter:image"
content='http://localhost:1313/img/icon.svg' />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="jumbotronContainer">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="https://github.com/Superredstone">
&#xf09b;
<span>
Github
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<div class="postlist " id="postlist">
<article class="card postlistitem">
<div>
<h2>
<a href="http://localhost:1313/posts/building-my-website-in-hugo/">Building my website in Hugo</a>
</h2>
<p class="date">
<span title='Date'>󰃭 </span>
2025-04-07
|
<span title='Tags'></span>
<a href="/tags/hosting">#hosting</a>
<a href="/tags/website">#website</a>
</p>
<div class="articlePreview">
<p>
<p>I always wanted a website/blog to write articles about what I like, so today I decided to make one!</p>
<p>After buying a domain and setting up the server I had just to decide what to write the website with.</p>
<h2 id="hugo">Hugo</h2>
<p><img src="https://gohugo.io/images/hugo-logo-wide.svg" alt="hugo-logo"></p>
<p>As a tech stack I wanted something simple and easy to mantain,
<a href="https://gohugo.io/">Hugo</a> makes everything so easy and painless that it is too good to be true.</p>
<p>Just install it and then write in the terminal</p>
</p>
<p><a href="http://localhost:1313/posts/building-my-website-in-hugo/">Continue reading </a></p>
</div>
</div>
<hr />
</article>
</div>
<div id="getNextBtnContainer"></div><script>
const tagsStr = 'Tags'
function renderTags(tags) {
if (tags.length <= 0) return '';
let res = `| <span title=''> </span>`;
for (let tag of tags) {
res += `<a href="/tags/${tag}/">#${tag}</a>&#32;`;
}
return res;
}
function renderImage(image, link, alt) {
if (!image) return '';
return `<a href="${link}"><img src="${image}" alt="${alt}" /></a>`;
}
function renderSingleArticle(article) {
const tags = renderTags(article.tags)
const img = ''
const continueReadingStr = 'Continue reading'
const summ = `<div class="articlePreview">
<p>${article.summary}</p>
<p><a href="${article.link}">${continueReadingStr} </a></p>
</div>`
const dateStr = 'Date'
return `
<article class="card postlistitem">
<div>
<h2>
<a href="${article.link}">${article.title}</a>
</h2>
<p class="date">
<span title='${dateStr}'>󰃭 </span>
${article.date}
${tags}
</p>
${img}
${summ}
</div>
<hr />
</article>
`;
}
function renderArticles(articles) {
let rendered = articles.map(a => renderSingleArticle(a)).join('\n');
document.getElementById('postlist').innerHTML += rendered;
}
</script>
<script>
var nextPage = '/index.json';
function getNext(first=false) {
if (!nextPage) return;
fetch(nextPage).then(res => res.json())
.then(res => {
nextPage = res['next'];
if (first) {
document.getElementById('getNextBtnContainer').innerHTML += `
<div class="loadMoreButton ">
<a style="cursor: pointer" onclick="getNext();">
Load more articles
</a>
</div>
`;
return;
}
if (!nextPage) document.getElementById('getNextBtnContainer').innerHTML = '';
renderArticles(res['articles']);
});
}
getNext(true);
</script>
<noscript>
</noscript>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

20
public/index.json Normal file
View File

@@ -0,0 +1,20 @@
{
"articles": [{"date":"2025-04-07","image":"","imageAlt":"","link":"http://localhost:1313/posts/building-my-website-in-hugo/","summary":"\u003cp\u003eI always wanted a website/blog to write articles about what I like, so today I decided to make one!\u003c/p\u003e\n\u003cp\u003eAfter buying a domain and setting up the server I had just to decide what to write the website with.\u003c/p\u003e\n\u003ch2 id=\"hugo\"\u003eHugo\u003c/h2\u003e\n\u003cp\u003e\u003cimg src=\"https://gohugo.io/images/hugo-logo-wide.svg\" alt=\"hugo-logo\"\u003e\u003c/p\u003e\n\u003cp\u003eAs a tech stack I wanted something simple and easy to mantain,\n\u003ca href=\"https://gohugo.io/\"\u003eHugo\u003c/a\u003e makes everything so easy and painless that it is too good to be true.\u003c/p\u003e\n\u003cp\u003eJust install it and then write in the terminal\u003c/p\u003e","tags":["hosting","website"],"title":"Building my website in Hugo"}],
"test": "Building my website in Hugo ",
"page": "1",
"next": ""
}

44
public/index.xml Normal file
View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/feed_style.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="https://www.rssboard.org/media-rss">
<channel>
<title>Patrick Canal</title>
<link>http://localhost:1313/</link>
<description>Recent content on Patrick Canal</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<copyright>Patrick Canal</copyright>
<lastBuildDate>Mon, 07 Apr 2025 19:16:28 +0200</lastBuildDate><atom:link href="http://localhost:1313/index.xml" rel="self" type="application/rss+xml" /><icon>http://localhost:1313/logo.svg</icon>
<item>
<title>Building my website in Hugo</title>
<link>http://localhost:1313/posts/building-my-website-in-hugo/</link>
<pubDate>Mon, 07 Apr 2025 19:16:28 +0200</pubDate>
<guid>http://localhost:1313/posts/building-my-website-in-hugo/</guid>
<description><![CDATA[<p>I always wanted a website/blog to write articles about what I like, so today I decided to make one!</p>
<p>After buying a domain and setting up the server I had just to decide what to write the website with.</p>
<h2 id="hugo">Hugo</h2>
<p>As a tech stack I wanted something simple and easy to mantain,
<a href="https://gohugo.io/">Hugo</a> makes everything so easy and painless that it is too good to be true.</p>
<p>Just install it and then write in the terminal</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hugo new site &lt;website-name&gt; <span style="color:#f92672">&amp;&amp;</span> cd &lt;website-name&gt;
</span></span></code></pre></div><p>to generate the template, install a good-looking theme from the <a href="https://themes.gohugo.io/themes/">themes page</a> on the Hugo website, in my case Ficurinia</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git clone https://github.com/patrickacciaioli/ficurinia themes/ficurinia
</span></span></code></pre></div><p>add the following line inside of <code>hugo.toml</code> with the greatest editor ever lived (Vim)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span><span style="color:#a6e22e">theme</span> = <span style="color:#e6db74">&#34;ficurinia&#34;</span>
</span></span></code></pre></div><p>Start the server with</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hugo server
</span></span></code></pre></div><p>and you are ready to go. A complete blog in seconds.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Building a personal website with Hugo was faster and easier than I could have ever done in plain HTML. With minimal setup and maximum flexibility, Hugo proved to be the perfect choice for my blog. Now, I can focus on writing posts worrying about the infamous <a href="https://en.wikipedia.org/wiki/HTML">Hypertext Markup Language</a>.</p>
]]></description>
</item>
</channel>
</rss>

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,161 @@
/* jetbrains-mono-regular-latin */
@font-face {
font-family: JetBrains Mono;
font-style: normal;
font-weight: 400;
src: local("JetBrains Mono Regular"), local("JetBrainsMono-Regular"), url(jetbrains-mono-regular-latin.woff2) format("woff2");
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215;
}
/* jetbrains-mono-regular-latin-ext */
@font-face {
font-family: JetBrains Mono;
font-style: normal;
font-weight: 400;
src: local("JetBrains Mono Regular"), local("JetBrainsMono-Regular"), url(jetbrains-mono-regular-latin-ext.woff2) format("woff2");
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20CF,U+2C60-2C7F,U+A720-A7FF;
}
/* jetbrains-mono-medium-italic-latin */
@font-face {
font-family: JetBrains Mono;
font-style: italic;
font-weight: 500;
src: local("JetBrains Mono Medium Italic"), local("JetBrainsMono-MediumItalic"), url(jetbrains-mono-medium-italic-latin.woff2) format("woff2");
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215;
}
/* jetbrains-mono-medium-italic-latin-ext */
@font-face {
font-family: JetBrains Mono;
font-style: italic;
font-weight: 500;
src: local("JetBrains Mono Medium Italic"), local("JetBrainsMono-MediumItalic"), url(jetbrains-mono-medium-italic-latin-ext.woff2) format("woff2");
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20CF,U+2C60-2C7F,U+A720-A7FF;
}
/* jetbrains-mono-medium-latin */
@font-face {
font-family: JetBrains Mono;
font-style: normal;
font-weight: 500;
src: local("JetBrains Mono Medium"), local("JetBrainsMono-Medium"), url(jetbrains-mono-medium-latin.woff2) format("woff2");
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215;
}
/* jetbrains-mono-medium-latin-ext */
@font-face {
font-family: JetBrains Mono;
font-style: normal;
font-weight: 500;
src: local("JetBrains Mono Medium"), local("JetBrainsMono-Medium"), url(jetbrains-mono-medium-latin-ext.woff2) format("woff2");
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20CF,U+2C60-2C7F,U+A720-A7FF;
}
/* jetbrains-mono-light-italic-latin */
@font-face {
font-family: JetBrains Mono;
font-style: italic;
font-weight: 300;
src: local("JetBrains Mono Light Italic"), local("JetBrainsMono-LightItalic"), url(jetbrains-mono-light-italic-latin.woff2) format("woff2");
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215;
}
/* jetbrains-mono-light-italic-latin-ext */
@font-face {
font-family: JetBrains Mono;
font-style: italic;
font-weight: 300;
src: local("JetBrains Mono Light Italic"), local("JetBrainsMono-LightItalic"), url(jetbrains-mono-light-italic-latin-ext.woff2) format("woff2");
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20CF,U+2C60-2C7F,U+A720-A7FF;
}
/* jetbrains-mono-light-latin */
@font-face {
font-family: JetBrains Mono;
font-style: normal;
font-weight: 300;
src: local("JetBrains Mono Light"), local("JetBrainsMono-Light"), url(jetbrains-mono-light-latin.woff2) format("woff2");
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215;
}
/* jetbrains-mono-light-latin-ext */
@font-face {
font-family: JetBrains Mono;
font-style: normal;
font-weight: 300;
src: local("JetBrains Mono Light"), local("JetBrainsMono-Light"), url(jetbrains-mono-light-latin-ext.woff2) format("woff2");
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20CF,U+2C60-2C7F,U+A720-A7FF;
}
/* jetbrains-mono-italic-latin */
@font-face {
font-family: JetBrains Mono;
font-style: italic;
font-weight: 400;
src: local("JetBrains Mono Italic"), local("JetBrainsMono-Italic"), url(jetbrains-mono-italic-latin.woff2) format("woff2");
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215;
}
/* jetbrains-mono-italic-latin-ext */
@font-face {
font-family: JetBrains Mono;
font-style: italic;
font-weight: 400;
src: local("JetBrains Mono Italic"), local("JetBrainsMono-Italic"), url(jetbrains-mono-italic-latin-ext.woff2) format("woff2");
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20CF,U+2C60-2C7F,U+A720-A7FF;
}
/* jetbrains-mono-extra-bold-italic-latin */
@font-face {
font-family: JetBrains Mono;
font-style: italic;
font-weight: 700;
src: local("JetBrains Mono Extra Bold Italic"), local("JetBrainsMono-ExtraBoldItalic"), url(jetbrains-mono-extra-bold-italic-latin.woff2) format("woff2");
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215;
}
/* jetbrains-mono-extra-bold-italic-latin-ext */
@font-face {
font-family: JetBrains Mono;
font-style: italic;
font-weight: 700;
src: local("JetBrains Mono Extra Bold Italic"), local("JetBrainsMono-ExtraBoldItalic"), url(jetbrains-mono-extra-bold-italic-latin-ext.woff2) format("woff2");
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20CF,U+2C60-2C7F,U+A720-A7FF;
}
/* jetbrains-mono-extra-bold-latin */
@font-face {
font-family: JetBrains Mono;
font-style: normal;
font-weight: 700;
src: local("JetBrains Mono Extra Bold"), local("JetBrainsMono-ExtraBold"), url(jetbrains-mono-extra-bold-latin.woff2) format("woff2");
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215;
}
/* jetbrains-mono-extra-bold-latin-ext */
@font-face {
font-family: JetBrains Mono;
font-style: normal;
font-weight: 700;
src: local("JetBrains Mono Extra Bold"), local("JetBrainsMono-ExtraBold"), url(jetbrains-mono-extra-bold-latin-ext.woff2) format("woff2");
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20CF,U+2C60-2C7F,U+A720-A7FF;
}
/* jetbrains-mono-bold-italic-latin */
@font-face {
font-family: JetBrains Mono;
font-style: italic;
font-weight: 700;
src: local("JetBrains Mono Bold Italic"), local("JetBrainsMono-BoldItalic"), url(jetbrains-mono-bold-italic-latin.woff2) format("woff2");
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215;
}
/* jetbrains-mono-bold-italic-latin-ext */
@font-face {
font-family: JetBrains Mono;
font-style: italic;
font-weight: 700;
src: local("JetBrains Mono Bold Italic"), local("JetBrainsMono-BoldItalic"), url(jetbrains-mono-bold-italic-latin-ext.woff2) format("woff2");
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20CF,U+2C60-2C7F,U+A720-A7FF;
}
/* jetbrains-mono-bold-latin */
@font-face {
font-family: JetBrains Mono;
font-style: normal;
font-weight: 700;
src: local("JetBrains Mono Bold"), local("JetBrainsMono-Bold"), url(jetbrains-mono-bold-latin.woff2) format("woff2");
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215;
}
/* jetbrains-mono-bold-latin-ext */
@font-face {
font-family: JetBrains Mono;
font-style: normal;
font-weight: 700;
src: local("JetBrains Mono Bold"), local("JetBrainsMono-Bold"), url(jetbrains-mono-bold-latin-ext.woff2) format("woff2");
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20CF,U+2C60-2C7F,U+A720-A7FF;
}

3
public/logo.svg Normal file
View File

@@ -0,0 +1,3 @@
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<path fill="#ffffff" d="M32.5,-53.5C46.5,-48.2,65.3,-48.4,69.4,-40.4C73.5,-32.4,62.9,-16.2,58.8,-2.3C54.8,11.5,57.3,23,52.6,30.1C48,37.1,36.2,39.8,26.3,48.2C16.3,56.7,8.2,70.9,0.2,70.6C-7.8,70.3,-15.6,55.4,-16.1,41.5C-16.6,27.6,-9.8,14.7,-12.4,7.9C-14.9,1.2,-26.8,0.6,-39.2,-7.2C-51.7,-14.9,-64.7,-29.9,-63.2,-38.6C-61.8,-47.3,-46,-49.8,-33.1,-55.8C-20.1,-61.8,-10.1,-71.2,-0.4,-70.5C9.2,-69.8,18.5,-58.9,32.5,-53.5Z" transform="translate(100 100)" />
</svg>

After

Width:  |  Height:  |  Size: 524 B

View File

@@ -0,0 +1,15 @@
{
"$schema": "https://json.schemastore.org/web-manifest-combined.json",
"name": "Patrick Canal",
"short_name": "Patrick Canal",
"start_url": "/",
"display": "standalone",
"background_color": "#242629",
"theme_color": "#db5793"
}

BIN
public/og-image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

10
public/page/1/index.html Normal file
View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>http://localhost:1313/</title>
<link rel="canonical" href="http://localhost:1313/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/">
</head>
</html>

View File

@@ -0,0 +1,273 @@
<!DOCTYPE html>
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<link
rel="icon"
href='logo.svg'
type="image/svg+xml"
/>
<title>
Building my website in Hugo &ndash;
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="Patrick Canal" />
<meta name="keywords" content='hosting, website' />
<meta name="description" content=" website/blog to write articles about what I like, so today I decided to make one!&lt;/p&gt;
&lt;p&gt;After buying a domain and setting up the server I had just to decide what to write the website with.&lt;/p&gt;
&lt;h2 id=&#34;hugo&#34;&gt;Hugo&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;https://gohugo.io/images/hugo-logo-wide.svg&#34; alt=&#34;hugo-logo&#34;&gt;&lt;/p&gt;
&lt;p&gt;As a tech stack I wanted something simple and easy to mantain,
&lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; makes everything so easy and painless that it is too good to be true.&lt;/p&gt;
&lt;p&gt;Just install it and then write in the terminal&lt;/p&gt;" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title" content="Building my website in Hugo" />
<meta property="og:type" content="article" />
<meta
property="article:author" content="Patrick Canal" />
<meta
property="article:published_time"
content='2025-04-07T19:16:28Z&#43;0200' />
<meta property="article:tag" content="hosting" />
<meta property="article:tag" content="website" />
<meta property="og:url" content="http://localhost:1313/posts/building-my-website-in-hugo/" />
<meta property="og:image"
content="http://localhost:1313/img/icon.svg" />
<meta property="og:description" content="&lt;p&gt;I always wanted a website/blog to write articles about what I like, so today I decided to make one!&lt;/p&gt;
&lt;p&gt;After buying a domain and setting up the server I " />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/posts/building-my-website-in-hugo/" />
<meta name="twitter:title" content="Building my website in Hugo" />
<meta name="twitter:image"
content="http://localhost:1313/img/icon.svg" />
<meta name="twitter:description" content="&lt;p&gt;I always wanted a website/blog to write articles about what I like, so today I decided to make one!&lt;/p&gt;
&lt;p&gt;After buying a domain and setting up the server I " />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="https://github.com/Superredstone">
&#xf09b;
<span>
Github
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<article class="card single">
<h1>Building my website in Hugo</h1>
<p class="date">
<span title='Date'>󰃭 </span>
2025-04-07
</p>
<div><p>I always wanted a website/blog to write articles about what I like, so today I decided to make one!</p>
<p>After buying a domain and setting up the server I had just to decide what to write the website with.</p>
<h2 id="hugo">Hugo</h2>
<p><img src="https://gohugo.io/images/hugo-logo-wide.svg" alt="hugo-logo"></p>
<p>As a tech stack I wanted something simple and easy to mantain,
<a href="https://gohugo.io/">Hugo</a> makes everything so easy and painless that it is too good to be true.</p>
<p>Just install it and then write in the terminal</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hugo new site &lt;website-name&gt; <span style="color:#f92672">&amp;&amp;</span> cd &lt;website-name&gt;
</span></span></code></pre></div><p>to generate the template, install a good-looking theme from the <a href="https://themes.gohugo.io/themes/">themes page</a> on the Hugo website, in my case Ficurinia</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git clone https://github.com/patrickacciaioli/ficurinia themes/ficurinia
</span></span></code></pre></div><p>add the following line inside of <code>hugo.toml</code> with the greatest editor ever lived (Vim)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span><span style="color:#a6e22e">theme</span> = <span style="color:#e6db74">&#34;ficurinia&#34;</span>
</span></span></code></pre></div><p>Start the server with</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hugo server
</span></span></code></pre></div><p>and you are ready to go. A complete blog in seconds.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Building a personal website with Hugo was faster and easier than I could have ever done in plain HTML. With minimal setup and maximum flexibility, Hugo proved to be the perfect choice for my blog. Now, I can focus on writing posts worrying about the infamous <a href="https://en.wikipedia.org/wiki/HTML">Hypertext Markup Language</a>.</p>
</div>
</article>
<hr />
<p class="articleTagsContainer">
<span></span>
<strong>Tags:</strong>
<a
href="/tags/hosting/">#hosting</a>
<a
href="/tags/website/">#website</a>
</p>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,221 @@
<!DOCTYPE html>
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<title>
Building my website in Hugo &ndash;
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="" />
<meta name="keywords" content='website' />
<meta name="description" content="" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title" content="Building my website in Hugo" />
<meta property="og:type" content="article" />
<meta
property="article:author" content="" />
<meta
property="article:published_time"
content='2025-04-07T19:16:28Z&#43;0200' />
<meta property="article:tag" content="website" />
<meta property="og:url" content="http://localhost:1313/posts/building-my-website/" />
<meta property="og:image"
content="http://localhost:1313/img/icon.svg" />
<meta property="og:description" content="" />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/posts/building-my-website/" />
<meta name="twitter:title" content="Building my website in Hugo" />
<meta name="twitter:image"
content="http://localhost:1313/img/icon.svg" />
<meta name="twitter:description" content="" />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='/logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<article class="card single">
<h1>Building my website in Hugo</h1>
<p class="date">
<span title='Date'>󰃭 </span>
2025-04-07
</p>
<div></div>
</article>
<hr />
<p class="articleTagsContainer">
<span></span>
<strong>Tags:</strong>
<a
href="/tags/website/">#website</a>
</p>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,226 @@
<!DOCTYPE html>
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<title>
Building my website in Hugo &ndash;
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="" />
<meta name="keywords" content='Server' />
<meta name="description" content="
&lt;p&gt;This is my first post on my blog!&lt;/p&gt;" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title" content="Building my website in Hugo" />
<meta property="og:type" content="article" />
<meta
property="article:author" content="" />
<meta
property="article:published_time"
content='2025-04-07T19:16:28Z&#43;0200' />
<meta property="article:tag" content="Server" />
<meta property="og:url" content="http://localhost:1313/posts/first-post/" />
<meta property="og:image"
content="http://localhost:1313/img/icon.svg" />
<meta property="og:description" content="&lt;p&gt;Hello, World!&lt;/p&gt;
&lt;p&gt;This is my first post on my blog!&lt;/p&gt;" />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/posts/first-post/" />
<meta name="twitter:title" content="Building my website in Hugo" />
<meta name="twitter:image"
content="http://localhost:1313/img/icon.svg" />
<meta name="twitter:description" content="&lt;p&gt;Hello, World!&lt;/p&gt;
&lt;p&gt;This is my first post on my blog!&lt;/p&gt;" />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='/logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<article class="card single">
<h1>Building my website in Hugo</h1>
<p class="date">
<span title='Date'>󰃭 </span>
2025-04-07
</p>
<div><p>Hello, World!</p>
<p>This is my first post on my blog!</p>
</div>
</article>
<hr />
<p class="articleTagsContainer">
<span></span>
<strong>Tags:</strong>
<a
href="/tags/server/">#Server</a>
</p>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

214
public/posts/index.html Normal file
View File

@@ -0,0 +1,214 @@
<!DOCTYPE html>
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link href="http://localhost:1313/posts/index.xml" rel="alternate" type="application/rss+xml" title="Patrick Canal" />
<link href="http://localhost:1313/posts/index.xml" rel="feed" type="application/rss+xml" title="Patrick Canal" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<link
rel="icon"
href='logo.svg'
type="image/svg+xml"
/>
<title>
Posts &ndash;
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="Patrick Canal" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title"
content='Patrick Canal' />
<meta property="og:type" content="blog" />
<meta property="og:image"
content='http://localhost:1313/img/icon.svg' />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/posts/" />
<meta name="twitter:title"
content='Patrick Canal' />
<meta name="twitter:image"
content='http://localhost:1313/img/icon.svg' />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="https://github.com/Superredstone">
&#xf09b;
<span>
Github
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<h2>
Posts
</h2>
<ul class="list">
<li>
<div>
<span class="date">
2025-04-07
</span>
<span>
<a href="http://localhost:1313/posts/building-my-website-in-hugo/">Building my website in Hugo</a> </span>
</div>
</li>
</ul>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

41
public/posts/index.xml Normal file
View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/feed_style.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="https://www.rssboard.org/media-rss">
<channel>
<title>Posts on Patrick Canal</title>
<link>http://localhost:1313/posts/</link>
<description>Recent content in Posts on Patrick Canal</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<copyright>Patrick Canal</copyright>
<lastBuildDate>Mon, 07 Apr 2025 19:16:28 +0200</lastBuildDate><atom:link href="http://localhost:1313/posts/index.xml" rel="self" type="application/rss+xml" /><icon>http://localhost:1313/logo.svg</icon>
<item>
<title>Building my website in Hugo</title>
<link>http://localhost:1313/posts/building-my-website-in-hugo/</link>
<pubDate>Mon, 07 Apr 2025 19:16:28 +0200</pubDate>
<guid>http://localhost:1313/posts/building-my-website-in-hugo/</guid>
<description><![CDATA[<p>I always wanted a website/blog to write articles about what I like, so today I decided to make one!</p>
<p>After buying a domain and setting up the server I had just to decide what to write the website with.</p>
<h2 id="hugo">Hugo</h2>
<p><img src="https://gohugo.io/images/hugo-logo-wide.svg" alt="hugo-logo"></p>
<p>As a tech stack I wanted something simple and easy to mantain,
<a href="https://gohugo.io/">Hugo</a> makes everything so easy and painless that it is too good to be true.</p>
<p>Just install it and then write in the terminal</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hugo new site &lt;website-name&gt; <span style="color:#f92672">&amp;&amp;</span> cd &lt;website-name&gt;
</span></span></code></pre></div><p>to generate the template, install a good-looking theme from the <a href="https://themes.gohugo.io/themes/">themes page</a> on the Hugo website, in my case Ficurinia</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git clone https://github.com/patrickacciaioli/ficurinia themes/ficurinia
</span></span></code></pre></div><p>add the following line inside of <code>hugo.toml</code> with the greatest editor ever lived (Vim)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span><span style="color:#a6e22e">theme</span> = <span style="color:#e6db74">&#34;ficurinia&#34;</span>
</span></span></code></pre></div><p>Start the server with</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hugo server
</span></span></code></pre></div><p>and you are ready to go. A complete blog in seconds.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Building a personal website with Hugo was faster and easier than I could have ever done in plain HTML. With minimal setup and maximum flexibility, Hugo proved to be the perfect choice for my blog. Now, I can focus on writing posts worrying about the infamous <a href="https://en.wikipedia.org/wiki/HTML">Hypertext Markup Language</a>.</p>
]]></description>
</item>
</channel>
</rss>

1
public/robots.txt Normal file
View File

@@ -0,0 +1 @@
User-agent: *

300
public/search/index.html Normal file
View File

@@ -0,0 +1,300 @@
<!DOCTYPE html>
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<link
rel="icon"
href='logo.svg'
type="image/svg+xml"
/>
<title>
Search &ndash;
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="Patrick Canal" />
<meta name="description" content="" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title" content="Search" />
<meta property="og:type" content="article" />
<meta
property="article:author" content="Patrick Canal" />
<meta
property="article:published_time"
content='0001-01-01T00:00:00Z&#43;0000' />
<meta property="og:url" content="http://localhost:1313/search/" />
<meta property="og:image"
content="http://localhost:1313/img/icon.svg" />
<meta property="og:description" content="" />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/search/" />
<meta name="twitter:title" content="Search" />
<meta name="twitter:image"
content="http://localhost:1313/img/icon.svg" />
<meta name="twitter:description" content="" />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="https://github.com/Superredstone">
&#xf09b;
<span>
Github
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<noscript>
You need to enable JavaScript to be able to search.
</noscript><div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
<div class="postlist " id="postlist">
</div><script>
const tagsStr = 'Tags'
function renderTags(tags) {
if (tags.length <= 0) return '';
let res = `| <span title=''> </span>`;
for (let tag of tags) {
res += `<a href="/tags/${tag}/">#${tag}</a>&#32;`;
}
return res;
}
function renderImage(image, link, alt) {
if (!image) return '';
return `<a href="${link}"><img src="${image}" alt="${alt}" /></a>`;
}
function renderSingleArticle(article) {
const tags = renderTags(article.tags)
const img = ''
const continueReadingStr = 'Continue reading'
const summ = `<div class="articlePreview">
<p>${article.summary}</p>
<p><a href="${article.link}">${continueReadingStr} </a></p>
</div>`
const dateStr = 'Date'
return `
<article class="card postlistitem">
<div>
<h2>
<a href="${article.link}">${article.title}</a>
</h2>
<p class="date">
<span title='${dateStr}'>󰃭 </span>
${article.date}
${tags}
</p>
${img}
${summ}
</div>
<hr />
</article>
`;
}
function renderArticles(articles) {
let rendered = articles.map(a => renderSingleArticle(a)).join('\n');
document.getElementById('postlist').innerHTML += rendered;
}
</script>
<script>
const noResFoundStr = "No results found"
function matchTags(page, term) {
for (let tag of page.tags) {
if (tag.includes(term)) return true;
}
return false;
}
function performSearch(term) {
document.getElementById('postlist').innerHTML = '';
term = term.toLowerCase();
fetch('/search/index.json').then(res => res.json())
.then(res => {
let articles = res.pages.filter(page => (
page.title.toLowerCase().includes(term) ||
matchTags(page, term) ||
page.text.includes(term)
));
if (articles.length > 0) renderArticles(articles);
else document.getElementById('postlist').innerHTML = `
<h3>${noResFoundStr}</h3>
`;
});
}
var url = location.href;
var baseUrl = url.split('?')[0];
var searchbar = document.getElementById('searchbar');
if (url.includes('?')) {
var urlParams = new URLSearchParams(url.split('?')[1]);
if (urlParams.has('q')) {
let searchTerm = urlParams.get('q');
searchbar.value = searchTerm;
performSearch(searchTerm);
}
}
</script>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

13
public/search/index.json Normal file
View File

@@ -0,0 +1,13 @@
{
"pages": [{"date":"2025-04-07","image":"","imageAlt":"","link":"http://localhost:1313/posts/building-my-website-in-hugo/","summary":"\u003cp\u003eI always wanted a website/blog to write articles about what I like, so today I decided to make one!\u003c/p\u003e\n\u003cp\u003eAfter buying a domain and setting up the server I had just to decide what to write the website with.\u003c/p\u003e\n\u003ch2 id=\"hugo\"\u003eHugo\u003c/h2\u003e\n\u003cp\u003eAs a tech stack I wanted something simple and easy to mantain,\n\u003ca href=\"https://gohugo.io/\"\u003eHugo\u003c/a\u003e makes everything so easy and painless that it is too good to be true.\u003c/p\u003e\n\u003cp\u003eJust install it and then write in the terminal\u003c/p\u003e","tags":["hosting","website"],"text":"i always wanted a website/blog to write articles about what i like, so today i decided to make one!\nafter buying a domain and setting up the server i had just to decide what to write the website with.\nhugo as a tech stack i wanted something simple and easy to mantain, hugo makes everything so easy and painless that it is too good to be true.\njust install it and then write in the terminal\nhugo new site \u0026lt;website-name\u0026gt; \u0026amp;\u0026amp; cd \u0026lt;website-name\u0026gt; to generate the template, install a good-looking theme from the themes page on the hugo website, in my case ficurinia\ngit clone https://github.com/patrickacciaioli/ficurinia themes/ficurinia add the following line inside of hugo.toml with the greatest editor ever lived (vim)\ntheme = \u0026#34;ficurinia\u0026#34; start the server with\nhugo server and you are ready to go. a complete blog in seconds.\nconclusion building a personal website with hugo was faster and easier than i could have ever done in plain html. with minimal setup and maximum flexibility, hugo proved to be the perfect choice for my blog. now, i can focus on writing posts worrying about the infamous hypertext markup language.\n","title":"Building my website in Hugo"}]
}

29
public/sitemap.xml Normal file
View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>http://localhost:1313/posts/building-my-website-in-hugo/</loc>
<lastmod>2025-04-07T19:16:28+02:00</lastmod>
</url><url>
<loc>http://localhost:1313/tags/hosting/</loc>
<lastmod>2025-04-07T19:16:28+02:00</lastmod>
</url><url>
<loc>http://localhost:1313/</loc>
<lastmod>2025-04-07T19:16:28+02:00</lastmod>
</url><url>
<loc>http://localhost:1313/posts/</loc>
<lastmod>2025-04-07T19:16:28+02:00</lastmod>
</url><url>
<loc>http://localhost:1313/tags/</loc>
<lastmod>2025-04-07T19:16:28+02:00</lastmod>
</url><url>
<loc>http://localhost:1313/tags/website/</loc>
<lastmod>2025-04-07T19:16:28+02:00</lastmod>
</url><url>
<loc>http://localhost:1313/categories/</loc>
</url><url>
<loc>http://localhost:1313/manifest/index.json</loc>
</url><url>
<loc>http://localhost:1313/search/</loc>
</url>
</urlset>

Binary file not shown.

View File

@@ -0,0 +1,8 @@
/* symbols-nerd-font */
@font-face {
font-family: Symbols Nerd Font;
font-style: normal;
font-weight: 400;
src: local("Symbols Nerd Font"), local("SymbolsNF"), url(symbols-nerd-font.woff2) format("woff2");
}

Binary file not shown.

View File

@@ -0,0 +1,214 @@
<!DOCTYPE html>
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link href="http://localhost:1313/tags/hosting/index.xml" rel="alternate" type="application/rss+xml" title="Patrick Canal" />
<link href="http://localhost:1313/tags/hosting/index.xml" rel="feed" type="application/rss+xml" title="Patrick Canal" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<link
rel="icon"
href='logo.svg'
type="image/svg+xml"
/>
<title>
Hosting &ndash;
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="Patrick Canal" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title"
content='Patrick Canal' />
<meta property="og:type" content="blog" />
<meta property="og:image"
content='http://localhost:1313/img/icon.svg' />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/tags/hosting/" />
<meta name="twitter:title"
content='Patrick Canal' />
<meta name="twitter:image"
content='http://localhost:1313/img/icon.svg' />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="https://github.com/Superredstone">
&#xf09b;
<span>
Github
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<h2>
Tag: #Hosting
</h2>
<ul class="list">
<li>
<div>
<span class="date">
2025-04-07
</span>
<span>
<a href="http://localhost:1313/posts/building-my-website-in-hugo/">Building my website in Hugo</a> </span>
</div>
</li>
</ul>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/feed_style.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="https://www.rssboard.org/media-rss">
<channel>
<title>Hosting on Patrick Canal</title>
<link>http://localhost:1313/tags/hosting/</link>
<description>Recent content in Hosting on Patrick Canal</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<copyright>Patrick Canal</copyright>
<lastBuildDate>Mon, 07 Apr 2025 19:16:28 +0200</lastBuildDate><atom:link href="http://localhost:1313/tags/hosting/index.xml" rel="self" type="application/rss+xml" /><icon>http://localhost:1313/logo.svg</icon>
<item>
<title>Building my website in Hugo</title>
<link>http://localhost:1313/posts/building-my-website-in-hugo/</link>
<pubDate>Mon, 07 Apr 2025 19:16:28 +0200</pubDate>
<guid>http://localhost:1313/posts/building-my-website-in-hugo/</guid>
<description><![CDATA[<p>I always wanted a website/blog to write articles about what I like, so today I decided to make one!</p>
<p>After buying a domain and setting up the server I had just to decide what to write the website with.</p>
<h2 id="hugo">Hugo</h2>
<p>As a tech stack I wanted something simple and easy to mantain,
<a href="https://gohugo.io/">Hugo</a> makes everything so easy and painless that it is too good to be true.</p>
<p>Just install it and then write in the terminal</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hugo new site &lt;website-name&gt; <span style="color:#f92672">&amp;&amp;</span> cd &lt;website-name&gt;
</span></span></code></pre></div><p>to generate the template, install a good-looking theme from the <a href="https://themes.gohugo.io/themes/">themes page</a> on the Hugo website, in my case Ficurinia</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git clone https://github.com/patrickacciaioli/ficurinia themes/ficurinia
</span></span></code></pre></div><p>add the following line inside of <code>hugo.toml</code> with the greatest editor ever lived (Vim)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span><span style="color:#a6e22e">theme</span> = <span style="color:#e6db74">&#34;ficurinia&#34;</span>
</span></span></code></pre></div><p>Start the server with</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hugo server
</span></span></code></pre></div><p>and you are ready to go. A complete blog in seconds.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Building a personal website with Hugo was faster and easier than I could have ever done in plain HTML. With minimal setup and maximum flexibility, Hugo proved to be the perfect choice for my blog. Now, I can focus on writing posts worrying about the infamous <a href="https://en.wikipedia.org/wiki/HTML">Hypertext Markup Language</a>.</p>
]]></description>
</item>
</channel>
</rss>

212
public/tags/index.html Normal file
View File

@@ -0,0 +1,212 @@
<!DOCTYPE html>
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link href="http://localhost:1313/tags/index.xml" rel="alternate" type="application/rss+xml" title="Patrick Canal" />
<link href="http://localhost:1313/tags/index.xml" rel="feed" type="application/rss+xml" title="Patrick Canal" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<link
rel="icon"
href='logo.svg'
type="image/svg+xml"
/>
<title>
Tags &ndash;
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="Patrick Canal" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title"
content='Patrick Canal' />
<meta property="og:type" content="blog" />
<meta property="og:image"
content='http://localhost:1313/img/icon.svg' />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/tags/" />
<meta name="twitter:title"
content='Patrick Canal' />
<meta name="twitter:image"
content='http://localhost:1313/img/icon.svg' />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="https://github.com/Superredstone">
&#xf09b;
<span>
Github
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<h2>
Tags:
</h2>
<ul class="list">
<li>
<a href="http://localhost:1313/tags/hosting/">#Hosting</a>
</li>
<li>
<a href="http://localhost:1313/tags/website/">#Website</a>
</li>
</ul>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

36
public/tags/index.xml Normal file
View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/feed_style.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="https://www.rssboard.org/media-rss">
<channel>
<title>Tags on Patrick Canal</title>
<link>http://localhost:1313/tags/</link>
<description>Recent content in Tags on Patrick Canal</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<copyright>Patrick Canal</copyright>
<lastBuildDate>Mon, 07 Apr 2025 19:16:28 +0200</lastBuildDate><atom:link href="http://localhost:1313/tags/index.xml" rel="self" type="application/rss+xml" /><icon>http://localhost:1313/logo.svg</icon>
<item>
<title>Hosting</title>
<link>http://localhost:1313/tags/hosting/</link>
<pubDate>Mon, 07 Apr 2025 19:16:28 +0200</pubDate>
<guid>http://localhost:1313/tags/hosting/</guid>
<description><![CDATA[]]></description>
</item>
<item>
<title>Website</title>
<link>http://localhost:1313/tags/website/</link>
<pubDate>Mon, 07 Apr 2025 19:16:28 +0200</pubDate>
<guid>http://localhost:1313/tags/website/</guid>
<description><![CDATA[]]></description>
</item>
</channel>
</rss>

View File

@@ -0,0 +1,182 @@
<!DOCTYPE html>
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link href="http://localhost:1313/tags/server/index.xml" rel="alternate" type="application/rss+xml" title="Patrick Canal" />
<link href="http://localhost:1313/tags/server/index.xml" rel="feed" type="application/rss+xml" title="Patrick Canal" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<title>
Server &ndash;
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title"
content='Patrick Canal' />
<meta property="og:type" content="blog" />
<meta property="og:image"
content='http://localhost:1313/img/icon.svg' />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/tags/server/" />
<meta name="twitter:title"
content='Patrick Canal' />
<meta name="twitter:image"
content='http://localhost:1313/img/icon.svg' />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='/logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<h2>
Tag: #Server
</h2>
<ul class="list">
</ul>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/feed_style.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="https://www.rssboard.org/media-rss">
<channel>
<title>Server on Patrick Canal</title>
<link>http://localhost:1313/tags/server/</link>
<description>Recent content in Server on Patrick Canal</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<copyright>Patrick Canal</copyright><atom:link href="http://localhost:1313/tags/server/index.xml" rel="self" type="application/rss+xml" /><icon>http://localhost:1313/img/icon.svg</icon>
</channel>
</rss>

182
public/tags/swag/index.html Normal file
View File

@@ -0,0 +1,182 @@
<!DOCTYPE html>
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link href="http://localhost:1313/tags/swag/index.xml" rel="alternate" type="application/rss+xml" title="Patrick Canal" />
<link href="http://localhost:1313/tags/swag/index.xml" rel="feed" type="application/rss+xml" title="Patrick Canal" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<title>
Swag &ndash;
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title"
content='Patrick Canal' />
<meta property="og:type" content="blog" />
<meta property="og:image"
content='http://localhost:1313/img/icon.svg' />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/tags/swag/" />
<meta name="twitter:title"
content='Patrick Canal' />
<meta name="twitter:image"
content='http://localhost:1313/img/icon.svg' />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='/logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<h2>
Tag: #Swag
</h2>
<ul class="list">
</ul>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/feed_style.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="https://www.rssboard.org/media-rss">
<channel>
<title>Swag on Patrick Canal</title>
<link>http://localhost:1313/tags/swag/</link>
<description>Recent content in Swag on Patrick Canal</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<copyright>Patrick Canal</copyright><atom:link href="http://localhost:1313/tags/swag/index.xml" rel="self" type="application/rss+xml" /><icon>http://localhost:1313/img/icon.svg</icon>
</channel>
</rss>

182
public/tags/tips/index.html Normal file
View File

@@ -0,0 +1,182 @@
<!DOCTYPE html>
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link href="http://localhost:1313/tags/tips/index.xml" rel="alternate" type="application/rss+xml" title="Patrick Canal" />
<link href="http://localhost:1313/tags/tips/index.xml" rel="feed" type="application/rss+xml" title="Patrick Canal" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<title>
Tips &ndash;
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title"
content='Patrick Canal' />
<meta property="og:type" content="blog" />
<meta property="og:image"
content='http://localhost:1313/img/icon.svg' />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/tags/tips/" />
<meta name="twitter:title"
content='Patrick Canal' />
<meta name="twitter:image"
content='http://localhost:1313/img/icon.svg' />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='/logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<h2>
Tag: #Tips
</h2>
<ul class="list">
</ul>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/feed_style.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="https://www.rssboard.org/media-rss">
<channel>
<title>Tips on Patrick Canal</title>
<link>http://localhost:1313/tags/tips/</link>
<description>Recent content in Tips on Patrick Canal</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<copyright>Patrick Canal</copyright><atom:link href="http://localhost:1313/tags/tips/index.xml" rel="self" type="application/rss+xml" /><icon>http://localhost:1313/img/icon.svg</icon>
</channel>
</rss>

View File

@@ -0,0 +1,214 @@
<!DOCTYPE html>
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="robots" content="noai, noimageai">
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<link href="http://localhost:1313/tags/website/index.xml" rel="alternate" type="application/rss+xml" title="Patrick Canal" />
<link href="http://localhost:1313/tags/website/index.xml" rel="feed" type="application/rss+xml" title="Patrick Canal" />
<link
rel="icon"
href='/favicon.png'
/>
<link
rel="shortcut icon"
href='/favicon.ico'
type="image/x-icon"
/>
<link
rel="apple-touch-icon"
href='/apple-touch-icon.png'
/>
<link
rel="icon"
href='logo.svg'
type="image/svg+xml"
/>
<title>
Website &ndash;
Patrick Canal
</title>
<link href="/symbols-nerd-font/symbols-nerd-font.css" rel="stylesheet" />
<link href="/jetbrains-mono/jetbrains-mono.css" rel="stylesheet" />
<link type="text/css" rel="stylesheet" href=http://localhost:1313/css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css integrity="sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv&#43;4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
<meta name="author" content="Patrick Canal" />
<meta property="og:site_name"
content='Patrick Canal' />
<meta property="og:title"
content='Patrick Canal' />
<meta property="og:type" content="blog" />
<meta property="og:image"
content='http://localhost:1313/img/icon.svg' />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain"
content='localhost:1313'
/>
<meta property="twitter:url" content="http://localhost:1313/tags/website/" />
<meta name="twitter:title"
content='Patrick Canal' />
<meta name="twitter:image"
content='http://localhost:1313/img/icon.svg' />
<link rel="manifest" href="/manifest/index.json" />
</head>
<body>
<div id="baseContainer"><header class="">
<div class="titleAndSearchContainer">
<div id="titleContainer">
<a class="unstyledLink" href="/">
<img src='logo.svg' alt='Logo'/>
</a>
<div class="rightOfLogo">
<div class="titleAndHamburger">
<h1>
<a class="unstyledLink" href="/">Patrick Canal</a>
</h1>
</div>
<div id="wide_nav"><nav>
<ul id="main-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts/">Posts</a></li>
<li><a href="/tags/">Tags</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="search">
<input id="searchbar" type="text" placeholder='Search' />
<span class="nerdlink" onclick="newSearch();">&#xf002;</span>
</div>
<script>
function newSearch() {
let term = searchbar.value.trim();
if (!term) return;
location.href = `/search/?q=${term}`;
}
searchbar.onkeyup = (ev) => {if (ev.keyCode == 13) newSearch()};
</script>
</div>
<div id="links">
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="/index.xml">
&#xf09e;
<span>
RSS
</span>
</a>
<a
rel="noreferrer"
target="_blank"
class="nerdlink"
href="https://github.com/Superredstone">
&#xf09b;
<span>
Github
</span>
</a>
</div>
</header>
<div id="contentContainer">
<div id="content">
<main>
<h2>
Tag: #Website
</h2>
<ul class="list">
<li>
<div>
<span class="date">
2025-04-07
</span>
<span>
<a href="http://localhost:1313/posts/building-my-website-in-hugo/">Building my website in Hugo</a> </span>
</div>
</li>
</ul>
</main><footer>
<hr />
<p><small>
2025 &copy; Patrick Canal
</small></p>
<p><small>
<a href='https://gitlab.com/gabmus/hugo-ficurinia'>Ficurinia theme</a> for <a href='https://gohugo.io'>Hugo</a> by <a href='https://gabmus.org'>Gabriele Musco</a>. Licensed under <a href='https://www.gnu.org/licenses/agpl-3.0.html'>GNU AGPLv3</a>.
</small></p>
</footer>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/feed_style.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="https://www.rssboard.org/media-rss">
<channel>
<title>Website on Patrick Canal</title>
<link>http://localhost:1313/tags/website/</link>
<description>Recent content in Website on Patrick Canal</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<copyright>Patrick Canal</copyright>
<lastBuildDate>Mon, 07 Apr 2025 19:16:28 +0200</lastBuildDate><atom:link href="http://localhost:1313/tags/website/index.xml" rel="self" type="application/rss+xml" /><icon>http://localhost:1313/logo.svg</icon>
<item>
<title>Building my website in Hugo</title>
<link>http://localhost:1313/posts/building-my-website-in-hugo/</link>
<pubDate>Mon, 07 Apr 2025 19:16:28 +0200</pubDate>
<guid>http://localhost:1313/posts/building-my-website-in-hugo/</guid>
<description><![CDATA[<p>I always wanted a website/blog to write articles about what I like, so today I decided to make one!</p>
<p>After buying a domain and setting up the server I had just to decide what to write the website with.</p>
<h2 id="hugo">Hugo</h2>
<p>As a tech stack I wanted something simple and easy to mantain,
<a href="https://gohugo.io/">Hugo</a> makes everything so easy and painless that it is too good to be true.</p>
<p>Just install it and then write in the terminal</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hugo new site &lt;website-name&gt; <span style="color:#f92672">&amp;&amp;</span> cd &lt;website-name&gt;
</span></span></code></pre></div><p>to generate the template, install a good-looking theme from the <a href="https://themes.gohugo.io/themes/">themes page</a> on the Hugo website, in my case Ficurinia</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git clone https://github.com/patrickacciaioli/ficurinia themes/ficurinia
</span></span></code></pre></div><p>add the following line inside of <code>hugo.toml</code> with the greatest editor ever lived (Vim)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span><span style="color:#a6e22e">theme</span> = <span style="color:#e6db74">&#34;ficurinia&#34;</span>
</span></span></code></pre></div><p>Start the server with</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hugo server
</span></span></code></pre></div><p>and you are ready to go. A complete blog in seconds.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Building a personal website with Hugo was faster and easier than I could have ever done in plain HTML. With minimal setup and maximum flexibility, Hugo proved to be the perfect choice for my blog. Now, I can focus on writing posts worrying about the infamous <a href="https://en.wikipedia.org/wiki/HTML">Hypertext Markup Language</a>.</p>
]]></description>
</item>
</channel>
</rss>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"Target":"css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css","MediaType":"text/css","Data":{"Integrity":"sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv+4Kqmhapuepye7MVMVqXag2w51E6XxLFBA=="}}

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

3
static/logo.svg Normal file
View File

@@ -0,0 +1,3 @@
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<path fill="#ffffff" d="M32.5,-53.5C46.5,-48.2,65.3,-48.4,69.4,-40.4C73.5,-32.4,62.9,-16.2,58.8,-2.3C54.8,11.5,57.3,23,52.6,30.1C48,37.1,36.2,39.8,26.3,48.2C16.3,56.7,8.2,70.9,0.2,70.6C-7.8,70.3,-15.6,55.4,-16.1,41.5C-16.6,27.6,-9.8,14.7,-12.4,7.9C-14.9,1.2,-26.8,0.6,-39.2,-7.2C-51.7,-14.9,-64.7,-29.9,-63.2,-38.6C-61.8,-47.3,-46,-49.8,-33.1,-55.8C-20.1,-61.8,-10.1,-71.2,-0.4,-70.5C9.2,-69.8,18.5,-58.9,32.5,-53.5Z" transform="translate(100 100)" />
</svg>

After

Width:  |  Height:  |  Size: 524 B

1
themes/ficurinia Submodule

Submodule themes/ficurinia added at c105d8fc3d

1
themes/terminal Submodule

Submodule themes/terminal added at 2cbfdf00f6