First commit
6
.gitmodules
vendored
Normal 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
5
archetypes/default.md
Normal file
@@ -0,0 +1,5 @@
|
||||
+++
|
||||
date = '{{ .Date }}'
|
||||
draft = true
|
||||
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
|
||||
+++
|
||||
36
content/posts/building-my-website-in-hugo.md
Normal 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
|
||||

|
||||
|
||||
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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -0,0 +1,189 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 –
|
||||
|
||||
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+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();"></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">
|
||||
|
||||
|
||||

|
||||
|
||||
<span>
|
||||
RSS
|
||||
</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
rel="noreferrer"
|
||||
|
||||
target="_blank"
|
||||
class="nerdlink"
|
||||
href="https://github.com/Superredstone">
|
||||
|
||||
|
||||

|
||||
|
||||
<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 © 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>
|
||||
BIN
public/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
public/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
public/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
3
public/bundle.min.js
vendored
Normal 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)}})()
|
||||
203
public/categories/index.html
Normal file
@@ -0,0 +1,203 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 –
|
||||
|
||||
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+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();"></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">
|
||||
|
||||
|
||||

|
||||
|
||||
<span>
|
||||
RSS
|
||||
</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
rel="noreferrer"
|
||||
|
||||
target="_blank"
|
||||
class="nerdlink"
|
||||
href="https://github.com/Superredstone">
|
||||
|
||||
|
||||

|
||||
|
||||
<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 © 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>
|
||||
11
public/categories/index.xml
Normal 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>
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}}
|
||||
@@ -0,0 +1 @@
|
||||
body .gist .blob-num,body .gist .blob-code-inner{border:none}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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
@@ -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)}
|
||||
@@ -0,0 +1,2 @@
|
||||
/* Placeholder file for your custom settings. */
|
||||
/* You can get the color scheme variables from https://panr.github.io/terminal-css/ */
|
||||
@@ -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
|
After Width: | Height: | Size: 46 KiB |
BIN
public/favicon.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
3
public/favicon.svg
Normal 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
@@ -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 →</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>
|
||||
BIN
public/fonts/FiraCode-Latin.woff2
Normal file
BIN
public/fonts/FiraCode-LatinExt.woff2
Normal file
330
public/index.html
Normal 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&v=2&port=1313&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+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();"></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">
|
||||
|
||||
|
||||

|
||||
|
||||
<span>
|
||||
RSS
|
||||
</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
rel="noreferrer"
|
||||
|
||||
target="_blank"
|
||||
class="nerdlink"
|
||||
href="https://github.com/Superredstone">
|
||||
|
||||
|
||||

|
||||
|
||||
<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> `;
|
||||
}
|
||||
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 © 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
@@ -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
@@ -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 <website-name> <span style="color:#f92672">&&</span> cd <website-name>
|
||||
</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">"ficurinia"</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>
|
||||
BIN
public/jetbrains-mono/jetbrains-mono-bold-italic-latin-ext.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-bold-italic-latin.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-bold-latin-ext.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-bold-latin.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-extra-bold-latin-ext.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-extra-bold-latin.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-italic-latin-ext.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-italic-latin.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-light-italic-latin.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-light-latin-ext.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-light-latin.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-medium-italic-latin.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-medium-latin-ext.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-medium-latin.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-regular-latin-ext.woff2
Normal file
BIN
public/jetbrains-mono/jetbrains-mono-regular-latin.woff2
Normal file
161
public/jetbrains-mono/jetbrains-mono.css
Normal 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
@@ -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 |
15
public/manifest/index.json
Normal 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
|
After Width: | Height: | Size: 4.5 KiB |
10
public/page/1/index.html
Normal 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>
|
||||
273
public/posts/building-my-website-in-hugo/index.html
Normal file
@@ -0,0 +1,273 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 –
|
||||
|
||||
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+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!</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>" />
|
||||
|
||||
|
||||
<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+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="<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 " />
|
||||
|
||||
|
||||
<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="<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 " />
|
||||
|
||||
|
||||
<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();"></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">
|
||||
|
||||
|
||||

|
||||
|
||||
<span>
|
||||
RSS
|
||||
</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
rel="noreferrer"
|
||||
|
||||
target="_blank"
|
||||
class="nerdlink"
|
||||
href="https://github.com/Superredstone">
|
||||
|
||||
|
||||

|
||||
|
||||
<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 <website-name> <span style="color:#f92672">&&</span> cd <website-name>
|
||||
</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">"ficurinia"</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 © 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>
|
||||
221
public/posts/building-my-website/index.html
Normal file
@@ -0,0 +1,221 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 –
|
||||
|
||||
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+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+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();"></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">
|
||||
|
||||
|
||||

|
||||
|
||||
<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 © 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>
|
||||
226
public/posts/first-post/index.html
Normal file
@@ -0,0 +1,226 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 –
|
||||
|
||||
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+4Kqmhapuepye7MVMVqXag2w51E6XxLFBA==" />
|
||||
<meta name="author" content="" />
|
||||
|
||||
|
||||
<meta name="keywords" content='Server' />
|
||||
|
||||
|
||||
<meta name="description" content="
|
||||
<p>This is my first post on my blog!</p>" />
|
||||
|
||||
|
||||
<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+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="<p>Hello, World!</p>
|
||||
<p>This is my first post on my blog!</p>" />
|
||||
|
||||
|
||||
<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="<p>Hello, World!</p>
|
||||
<p>This is my first post on my blog!</p>" />
|
||||
|
||||
|
||||
<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();"></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">
|
||||
|
||||
|
||||

|
||||
|
||||
<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 © 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
@@ -0,0 +1,214 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 –
|
||||
|
||||
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+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();"></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">
|
||||
|
||||
|
||||

|
||||
|
||||
<span>
|
||||
RSS
|
||||
</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
rel="noreferrer"
|
||||
|
||||
target="_blank"
|
||||
class="nerdlink"
|
||||
href="https://github.com/Superredstone">
|
||||
|
||||
|
||||

|
||||
|
||||
<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 © 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
@@ -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 <website-name> <span style="color:#f92672">&&</span> cd <website-name>
|
||||
</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">"ficurinia"</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
@@ -0,0 +1 @@
|
||||
User-agent: *
|
||||
300
public/search/index.html
Normal file
@@ -0,0 +1,300 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 –
|
||||
|
||||
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+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+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">
|
||||
|
||||
|
||||

|
||||
|
||||
<span>
|
||||
RSS
|
||||
</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
rel="noreferrer"
|
||||
|
||||
target="_blank"
|
||||
class="nerdlink"
|
||||
href="https://github.com/Superredstone">
|
||||
|
||||
|
||||

|
||||
|
||||
<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();"></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> `;
|
||||
}
|
||||
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 © 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
@@ -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
@@ -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>
|
||||
BIN
public/symbols-nerd-font/symbols-nerd-font-mono.woff2
Normal file
8
public/symbols-nerd-font/symbols-nerd-font.css
Normal 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");
|
||||
}
|
||||
|
||||
BIN
public/symbols-nerd-font/symbols-nerd-font.woff2
Normal file
214
public/tags/hosting/index.html
Normal file
@@ -0,0 +1,214 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 –
|
||||
|
||||
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+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();"></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">
|
||||
|
||||
|
||||

|
||||
|
||||
<span>
|
||||
RSS
|
||||
</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
rel="noreferrer"
|
||||
|
||||
target="_blank"
|
||||
class="nerdlink"
|
||||
href="https://github.com/Superredstone">
|
||||
|
||||
|
||||

|
||||
|
||||
<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 © 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>
|
||||
40
public/tags/hosting/index.xml
Normal 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 <website-name> <span style="color:#f92672">&&</span> cd <website-name>
|
||||
</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">"ficurinia"</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
@@ -0,0 +1,212 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 –
|
||||
|
||||
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+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();"></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">
|
||||
|
||||
|
||||

|
||||
|
||||
<span>
|
||||
RSS
|
||||
</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
rel="noreferrer"
|
||||
|
||||
target="_blank"
|
||||
class="nerdlink"
|
||||
href="https://github.com/Superredstone">
|
||||
|
||||
|
||||

|
||||
|
||||
<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 © 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
@@ -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>
|
||||
182
public/tags/server/index.html
Normal file
@@ -0,0 +1,182 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 –
|
||||
|
||||
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+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();"></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">
|
||||
|
||||
|
||||

|
||||
|
||||
<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 © 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>
|
||||
11
public/tags/server/index.xml
Normal 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
@@ -0,0 +1,182 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 –
|
||||
|
||||
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+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();"></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">
|
||||
|
||||
|
||||

|
||||
|
||||
<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 © 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>
|
||||
11
public/tags/swag/index.xml
Normal 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
@@ -0,0 +1,182 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 –
|
||||
|
||||
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+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();"></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">
|
||||
|
||||
|
||||

|
||||
|
||||
<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 © 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>
|
||||
11
public/tags/tips/index.xml
Normal 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>
|
||||
214
public/tags/website/index.html
Normal file
@@ -0,0 +1,214 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="" lang="en-us"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 –
|
||||
|
||||
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+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();"></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">
|
||||
|
||||
|
||||

|
||||
|
||||
<span>
|
||||
RSS
|
||||
</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
rel="noreferrer"
|
||||
|
||||
target="_blank"
|
||||
class="nerdlink"
|
||||
href="https://github.com/Superredstone">
|
||||
|
||||
|
||||

|
||||
|
||||
<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 © 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>
|
||||
40
public/tags/website/index.xml
Normal 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 <website-name> <span style="color:#f92672">&&</span> cd <website-name>
|
||||
</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">"ficurinia"</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>
|
||||
@@ -0,0 +1 @@
|
||||
{"Target":"css/styles.abbd6311bb4b6ca58f8e7398140529245ae0f6428b759fcd830742eee2619eabb900ba9914a9affb82aa9a16a9b9ea727bb315315a976a0db0e7513a5f12c504.css","MediaType":"text/css","Data":{"Integrity":"sha512-q71jEbtLbKWPjnOYFAUpJFrg9kKLdZ/NgwdC7uJhnqu5ALqZFKmv+4Kqmhapuepye7MVMVqXag2w51E6XxLFBA=="}}
|
||||
BIN
static/favicon.ico
Normal file
|
After Width: | Height: | Size: 46 KiB |
3
static/logo.svg
Normal 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 |