diff --git a/legacy_docs/CNAME b/site/CNAME similarity index 100% rename from legacy_docs/CNAME rename to site/CNAME diff --git a/site/assets/yggdrasil.ico b/site/assets/yggdrasil.ico new file mode 100644 index 0000000..6c33aea Binary files /dev/null and b/site/assets/yggdrasil.ico differ diff --git a/site/assets/yggdrasil.svg b/site/assets/yggdrasil.svg new file mode 100644 index 0000000..e94266f --- /dev/null +++ b/site/assets/yggdrasil.svg @@ -0,0 +1,43 @@ + + + + diff --git a/site/calepin.toml b/site/calepin.toml index 80c3fcb..15a4265 100644 --- a/site/calepin.toml +++ b/site/calepin.toml @@ -3,80 +3,89 @@ description = "Personal knowledge base." base-url = "https://yggdrasil.kb28.ch" theme = "calepin" pdf = false +minify = true +search = "pagefind" +logo = "assets/yggdrasil.svg" +favicon = "assets/yggdrasil.ico" + +[robots] +enabled = false + +[pages] +include = ["tags.typ"] +exclude = ["drafts/**"] [static] -include = ["assets/**"] +include = [ + "assets/**", + "CNAME" +] +exclude = ["drafts/**"] -[[menus.main]] -target = "home/index.typ" -label = "Home" +[menus] +main = [ + { label = "Home", target = "home/index.typ" }, + { label = "IT", target = "it/index.typ" }, + { label = "OT", target = "ot/index.typ" }, + { label = "Security", target = "security/index.typ" }, + { label = "Medias", target = "medias/index.typ" }, +] +social = [ + { label = "{icon:simple-icons:gitea}", target = "https://git.kb28.ch/Klagarge/Yggdrasil", aria-label = "Gitea" }, +] -[[menus.main]] -target = "it/index.typ" -label = "IT" -[[menus.main]] -target = "ot/index.typ" -label = "OT" - -[[menus.main]] -target = "security/index.typ" -label = "Security" - -[[menus.main]] -target = "medias/index.typ" -label = "Medias" +[footer] +item = [ + { label = "© 2026" }, + { label = "@Klagarge", target = "https://git.kb28.ch/Klagarge" }, + { label = "@Fastium", target = "https://github.com/Fastium" }, +] [sidebar] fold = true [[sidebar.section]] title = "Home" +item = [ + { target = "home/index.typ" }, + { glob = "home/*" } +] - [[sidebar.section.item]] - target = "home/index.typ" - - [[sidebar.section.item]] - target = "home/cooking.typ" - - [[sidebar.section.item]] - target = "home/washing-clothes.typ" - - [[sidebar.section.item]] - target = "home/gardening.typ" [[sidebar.section]] title = "IT" - - [[sidebar.section.item]] - target = "it/index.typ" +item = [ + { target = "it/index.typ" }, + { glob = "it/*" } +] [[sidebar.section]] title = "OT" - - [[sidebar.section.item]] - target = "ot/index.typ" +item = [ + { target = "ot/index.typ" }, + { glob = "ot/*" } +] [[sidebar.section]] title = "Security" - - [[sidebar.section.item]] - target = "security/index.typ" - - [[sidebar.section.item]] - target = "security/ssh.typ" +item = [ + { target = "security/index.typ" }, + { glob = "security/*" } +] [[sidebar.section]] title = "Medias" - - [[sidebar.section.item]] - target = "medias/index.typ" - - [[sidebar.section.item]] - target = "medias/films.typ" - - [[sidebar.section.item]] - target = "medias/series.typ" - - [[sidebar.section.item]] - target = "medias/books.typ" +target = "medias/index.typ" +item = [ + # { glob = "medias/films/*.typ" }, + # { glob = "medias/series/*.typ" }, + # { glob = "medias/books/*.typ" }, + { target = "medias/index.typ" }, + { glob = "medias/*.typ" }, +] +section = [ + { title = "Films", item = [{ glob = "medias/films/*.typ" }] }, + { title = "Series", item = [{ glob = "medias/series/*.typ" }] }, + { title = "Books", item = [{ glob = "medias/books/*.typ" }] }, +] diff --git a/site/medias/books.typ b/site/medias/books.typ deleted file mode 100644 index 0b798e5..0000000 --- a/site/medias/books.typ +++ /dev/null @@ -1,6 +0,0 @@ -#set document(title: [Books]) -#metadata((title: "Books", translation_key: "medias-books")) - -#title() - -Placeholder page — the real content comes later. diff --git a/site/medias/books/le_grand_cahier.typ b/site/medias/books/le_grand_cahier.typ new file mode 100644 index 0000000..82dd99f --- /dev/null +++ b/site/medias/books/le_grand_cahier.typ @@ -0,0 +1,11 @@ +#set document(title: [Le Grand Cahier]) +#metadata(( + translation_key: "le_grand_cahier", + date: "2026-10-10", + author: "Rémi Heredero", + pdf: true +)) + +#title() + +This book is awesome! diff --git a/site/medias/films.typ b/site/medias/films.typ deleted file mode 100644 index a124b6d..0000000 --- a/site/medias/films.typ +++ /dev/null @@ -1,6 +0,0 @@ -#set document(title: [Films]) -#metadata((title: "Films", translation_key: "medias-films")) - -#title() - -Placeholder page — the real content comes later. diff --git a/site/medias/films/h2g2.typ b/site/medias/films/h2g2.typ new file mode 100644 index 0000000..1d5e06d --- /dev/null +++ b/site/medias/films/h2g2.typ @@ -0,0 +1,10 @@ +#set document(title: [H2G2]) +#metadata(( + translation_key: "h2g2", + date: "2026-10-10", + author: "Rémi Heredero", + pdf: true +)) + +#title() +One of my favourites films! diff --git a/site/medias/index.typ b/site/medias/index.typ index 29f2c7c..7a28e38 100644 --- a/site/medias/index.typ +++ b/site/medias/index.typ @@ -1,7 +1,43 @@ #set document(title: [Medias]) -#metadata((title: "Overview", translation_key: "medias-index")) +#metadata(( + title: "Overview", + translation_key: "medias-overview", + date: "2026-10-10", + tags: ("medias", "films", "series", "books"), + author: "Rémi Heredero", + summary: "My very opinionned ideas about somes films, series and books", + draft: false, + pdf: false +)) #title() -Placeholder page for the medias category: films, series, books. +Placeholder page for the medias category. The real content comes later. + +#import "@preview/calepin:0.1.0" as calepin +#show: calepin.document + +== Films +#let posts = calepin.pages().filter(p => p.path.starts-with("medias/films/")).filter(p => not p.meta.at("draft", default: false)).sorted(key: p => p.meta.at("date", default: "")).rev() + +#for post in posts [ + - #link(post.href)[#post.title] \ + #post.meta.at("summary", default: []) +] + +== Series +#let posts = calepin.pages().filter(p => p.path.starts-with("medias/series/")).filter(p => not p.meta.at("draft", default: false)).sorted(key: p => p.meta.at("date", default: "")).rev() + +#for post in posts [ + - #link(post.href)[#post.title] \ + #post.meta.at("summary", default: []) +] + +== Books +#let posts = calepin.pages().filter(p => p.path.starts-with("medias/books/")).filter(p => not p.meta.at("draft", default: false)).sorted(key: p => p.meta.at("date", default: "")).rev() + +#for post in posts [ + - #link(post.href)[#post.title] \ + #post.meta.at("summary", default: []) +] diff --git a/site/medias/plex.typ b/site/medias/plex.typ new file mode 100644 index 0000000..a21479c --- /dev/null +++ b/site/medias/plex.typ @@ -0,0 +1,12 @@ +#set document(title: [Plex]) +#metadata(( + translation_key: "plex", + date: "2026-10-10", + author: "Rémi Heredero", + summary: "Plex is a media server", + pdf: true +)) + +#title() + +I think I'll switch to Jellyfin not in so long time diff --git a/site/medias/series.typ b/site/medias/series.typ deleted file mode 100644 index e673963..0000000 --- a/site/medias/series.typ +++ /dev/null @@ -1,6 +0,0 @@ -#set document(title: [Series]) -#metadata((title: "Series", translation_key: "medias-series")) - -#title() - -Placeholder page — the real content comes later. diff --git a/site/medias/series/the_expanse.typ b/site/medias/series/the_expanse.typ new file mode 100644 index 0000000..140cb33 --- /dev/null +++ b/site/medias/series/the_expanse.typ @@ -0,0 +1,17 @@ +#set document(title: [The Expanse]) +#metadata(( + translation_key: "the_expanse", + date: "2026-10-10", + author: "Rémi Heredero", + summary: " - S01: 9/10 + - S02: 9/10 + - S03: 8/10 + - S04: 8/10 + - S05: 8/10 + - S06: 8/10", + pdf: true +)) + +#title() + +I love hard science! diff --git a/site/tags.typ b/site/tags.typ new file mode 100644 index 0000000..26d2015 --- /dev/null +++ b/site/tags.typ @@ -0,0 +1,23 @@ +#import "/.calepin/calepin.typ" as calepin +#show: calepin.document + +#let taxonomy(field) = { + let pages = calepin.pages() + .filter(page => page.meta.at(field, default: ()) != ()) + let terms = pages + .map(page => page.meta.at(field)) + .flatten() + .dedup() + .sorted(key: term => lower(term)) + + for term in terms { + heading(term, level: 2) + for page in pages.filter( + page => term in page.meta.at(field) + ) [ + - #link(page.href)[#page.title] + ] + } +} + +#taxonomy("tags")