Compare commits

..

7 commits

13 changed files with 327 additions and 69 deletions

View file

@ -2,7 +2,7 @@
title: '{{ replace .File.ContentBaseName "-" " " | title }}'
date: '{{ .Date }}'
draft: true
ShowToc: true
ShowToc: false
cover:
hidden: false # hide everywhere but not in structured data
hiddenInList: false # hide on list pages and home

View file

@ -15,8 +15,9 @@ ShowReadingTime: false
Hello !
Je suis Achille Toupin, et j'aime bien bricoler des projets, écrire du code, prendre des photos (entre autres).
Je suis Achille Toupin, et j'aime bien bricoler des projets, écrire du code, prendre des photos (entre autres, parceque comme tout ce qui est ✨nouveau✨ est cool, j'essaie plein de trucs).
Je suis un ingénieur de formation, qui aime bien les grosses machines et l'usine qui gronde. Mon boulot c'est de faire en sorte qu'on puisse fabriquer des trucs mieux qu'avant.
Ce site perso est une de mes présences sur internet, je ~~l'ai fabriqué~~ le fabrique continuellement avec [Hugo](https://gohugo.io/) et [Zuma](https://zuma.shenanigans.cc/)
Ce site perso est une de mes présences sur internet, je ~~l'ai fabriqué~~ le fabrique continuellement avec [Hugo](https://gohugo.io/), [Zuma](https://zuma.shenanigans.cc/), et [ChatGPT](https://chatgpt.com/) (bouh, c'est pas bien)
Vous pouvez y lire mes [articles de blog](../blog), regarder ma [collection de machines](../collection), et surtout voir mes projets.

33
content/liens/index.md Normal file
View file

@ -0,0 +1,33 @@
---
title: 'Liens'
date: '2025-04-27T21:26:00+02:00'
draft: false
ShowToc: false
cover:
hidden: false # hide everywhere but not in structured data
hiddenInList: false # hide on list pages and home
hiddenInSingle: true # hide on single page
image: "images/<image.jpg>"
alt: "<alt text>"
caption: "<text>"
relative: true # To use relative path for cover image, used in hugo Page-bundles
ShowBreadCrumbs: false
ShowPostNavLinks: true
ShowReadingTime: false
---
# Gens cool
## Potes
- [Zuma](https://zuma.shenanigans.cc/)
## Inspiration
- [Mitxela](https://mitxela.com/)
- [Fills](https://frills.dev/)
# Trucs cool
-

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View file

@ -1,12 +1,12 @@
---
title: Ishmael
date: 2016-02-21T09:58:00
date: 2024-10-21T09:58:00
draft: false
cover:
hidden: false # hide everywhere but not in structured data
hiddenInList: false # hide on list pages and home
hiddenInSingle: true # hide on single page
image: "images/2016-10-22-11-12-16.jpg"
image: "images/cover.png"
alt: "<alt text>"
caption: "<text>"
relative: true # To use relative path for cover image, used in hugo Page-bundles

View file

@ -1 +0,0 @@
en construction

View file

@ -39,10 +39,9 @@
}
.post-entry {
border: 1px solid #ddd;
padding: 0;
border-radius: 8px;
background-color: #f9f9f9;
background-color: var(--entry);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
margin: 0;
}

View file

@ -27,8 +27,6 @@
align-items: stretch; /* Ensure full height */
min-height: 100vh; /* Ensure the body takes up the full viewport height */
}
.main-screen {
display: flex;
flex-direction: row;
@ -56,6 +54,12 @@
align-items: center; /* Align items vertically in the center */
padding: 10px 20px; /* Optional: Add some padding */
}
.title-wrapper {
display: flex;
flex-direction: row;
gap: 10px;
justify-content: space-between;
}
.site-title {
flex-grow: 1;
margin: 0; /* Remove default margin */
@ -65,25 +69,14 @@
.navigation {
flex-grow: 3;
display: flex;
}
.navigation ul {
display: flex;
flex-wrap: wrap; /* Allow items to wrap onto multiple lines */
list-style: none;
margin: 0; /* Remove default margin */
padding: 0; /* Remove default padding */
justify-content: flex-end; /* Align items to the right */
.presentation, .side-content-column > * {
background-color: var(--entry);
padding: 10px;
border-radius: var(--radius);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.navigation ul li {
margin: 0 10px 0 10px;
}
.navigation ul li a:hover {
text-decoration: underline; /* Add underline on hover */
}
.center-content {
.center-content, .side-content-column {
display: flex;
flex-grow: 1; /* Allow it to grow */
gap: 20px; /* Optional: Add spacing between child elements */
@ -99,8 +92,22 @@
}
.side-content-column {
max-width: 100%; /* Ensure it doesn't exceed its container */
flex-direction: column;
}
@media (max-width: 1380px) {
.excerpt {
display: flex;
align-items: center; /* Align items vertically in the center */
gap: 10px; /* Add spacing between text and image */
}
.excerpt-text {
flex: 1; /* Allow text to take up remaining space */
}
.excerpt img {
flex-shrink: 0; /* Prevent the image from shrinking */
max-width: 150px; /* Ensure the image doesn't exceed its intended size */
height: auto; /* Maintain aspect ratio */
}
@media (max-width: 1600px) {
.side-screen {
display: none; /* Hide side-screens on smaller screens */
}
@ -171,24 +178,8 @@
</div>
<div class="main-content">
<div class="header">
<div class="title-wrapper">
<h1 class="site-title">Achille Toupin</h1>
<nav class="navigation">
<ul>
<li>📝 <a href="blog">Blog</a></li>
<p> · </p>
<li>📠 <a href="collection">Machines</a></li>
<p> · </p>
<li>🔗 <a href="liens">Liens</a></li>
<p> · </p>
<li>🔖 <a href="marque-pages">Marque-pages</a></li>
<p> · </p>
<li>🌐 <a href="blogroll">Blogroll</a></li>
<p> · </p>
<li><a href="a-propos">A propos</a></li>
<p> · </p>
<li>✉️ <a href="contact">Contact</a></li>
</ul>
{{- if (not site.Params.disableThemeToggle) }}
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
@ -211,6 +202,11 @@
</svg>
</button>
{{- end }}
</div>
<nav class="navigation">
{{ partial "menu.html" }}
</nav>
</div>
@ -220,12 +216,62 @@
</div>
<div class="side-content-column">
<div class="dernier-article">
<h2>Mon dernier article</h2>
{{ partial "posts-recents-carte.html" . }}
{{ range first 1 (where .Site.RegularPages.ByDate.Reverse "Section" "blog") }}
{{- $image := .Resources.GetMatch (printf "%s" .Params.cover.image) -}}
{{- if $image -}}
{{- $optimizedImage := $image.Fill "150x150 webp q95 Center" -}}
<a href="{{ .RelPermalink }}">
<h2>Mon dernier article :</h2>
<h3>{{ .Title }}</h3>
<div class="excerpt">
<div class="excerpt-text">
<small>{{ .Date.Format "January 2, 2006" }}</small>
<p>{{ .Plain | plainify | truncate 100 }}</p>
</div>
<img src="{{ $optimizedImage.RelPermalink }}" alt="{{ .Title }} cover image"></img>
</div>
</a>
{{ end }}
{{ end }}
</div>
<div class="dernier-article">
<h2>Mon dernier article</h2>
{{ partial "posts-recents-carte.html" . }}
{{ range first 1 (where .Site.RegularPages.ByDate.Reverse "Section" "collection") }}
{{- $image := .Resources.GetMatch (printf "%s" .Params.cover.image) -}}
{{- if $image -}}
{{- $optimizedImage := $image.Fit "150x150 webp q95 Center" -}}
<a href="{{ .RelPermalink }}">
<h2>Une belle machine :</h2>
<h3>{{ .Title }}</h3>
<div class="excerpt">
<div class="excerpt-text">
<small>{{ .Date.Format "January 2, 2006" }}</small>
<p>{{ .Plain | plainify | truncate 100 }}</p>
</div>
<img src="{{ $optimizedImage.RelPermalink }}" alt="{{ .Title }} cover image"></img>
</div>
</a>
{{ end }}
{{ end }}
</div>
<div class="dernier-livre">
{{ range first 1 (where .Site.RegularPages.ByDate.Reverse "Section" "livres") }}
{{- $image := .Resources.GetMatch (printf "%s" .Params.cover.image) -}}
{{- if $image -}}
{{- $optimizedImage := $image.Fit "150x150 webp q95 Center" -}}
<a href="{{ .RelPermalink }}">
<h2>Lecture du moment :</h2>
<h3>{{ .Title }}</h3>
<div class="excerpt">
<div class="excerpt-text">
<small>{{ .Date.Format "January 2, 2006" }}</small>
<p>{{ .Plain | plainify | truncate 100 }}</p>
</div>
<img src="{{ $optimizedImage.RelPermalink }}" alt="{{ .Title }} cover image"></img>
</div>
</a>
{{ end }}
{{ end }}
</div>
</div>
</div>

View file

@ -5,7 +5,7 @@
justify-content: center;
max-width: 100vw; /* Make the container as wide as the viewport */
gap: 3px;
margin: 0; /* Remove any default margin */
margin: 20px 0 0 0; /* Remove any default margin */
padding: 0; /* Remove any default padding */
}
.button {

View file

@ -0,0 +1,125 @@
{{- /* theme-toggle is enabled */}}
{{- if (not site.Params.disableThemeToggle) }}
{{- /* theme is light */}}
{{- if (eq site.Params.defaultTheme "light") }}
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
}
</script>
{{- /* theme is dark */}}
{{- else if (eq site.Params.defaultTheme "dark") }}
<script>
if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
}
</script>
{{- else }}
{{- /* theme is auto */}}
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
{{- end }}
{{- /* theme-toggle is disabled and theme is auto */}}
{{- else if (and (ne site.Params.defaultTheme "light") (ne site.Params.defaultTheme "dark"))}}
<script>
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
{{- end }}
<header class="header">
<nav class="nav">
<div class="logo">
{{- $label_text := (site.Params.label.text | default site.Title) }}
{{- if site.Title }}
<a href="{{ "" | absLangURL }}" accesskey="h" title="{{ $label_text }} (Alt + H)">
{{- if site.Params.label.icon }}
{{- $img := resources.Get site.Params.label.icon }}
{{- if $img }}
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -}}
{{- if hugo.IsExtended -}}
{{- $processableFormats = $processableFormats | append "webp" -}}
{{- end -}}
{{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }}
{{- if and (in $processableFormats $img.MediaType.SubType) (eq $prod true)}}
{{- if site.Params.label.iconHeight }}
{{- $img = $img.Resize (printf "x%d" site.Params.label.iconHeight) }}
{{ else }}
{{- $img = $img.Resize "x30" }}
{{- end }}
{{- end }}
<img src="{{ $img.Permalink }}" alt="" aria-label="logo"
height="{{- site.Params.label.iconHeight | default "30" -}}">
{{- else }}
<img src="{{- site.Params.label.icon | absURL -}}" alt="" aria-label="logo"
height="{{- site.Params.label.iconHeight | default "30" -}}">
{{- end -}}
{{- else if hasPrefix site.Params.label.iconSVG "<svg" }}
{{ site.Params.label.iconSVG | safeHTML }}
{{- end -}}
{{- $label_text -}}
</a>
{{- end }}
<div class="logo-switches">
{{- if (not site.Params.disableThemeToggle) }}
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
{{- end }}
{{- $lang := .Lang}}
{{- $separator := or $label_text (not site.Params.disableThemeToggle)}}
{{- with site.Home.Translations }}
<ul class="lang-switch">
{{- if $separator }}<li>|</li>{{ end }}
{{- range . -}}
{{- if ne $lang .Lang }}
<li>
<a href="{{- .Permalink -}}" title="{{ .Language.Params.languageAltTitle | default (.Language.LanguageName | emojify) | default (.Lang | title) }}"
aria-label="{{ .Language.LanguageName | default (.Lang | title) }}">
{{- if (and site.Params.displayFullLangName (.Language.LanguageName)) }}
{{- .Language.LanguageName | emojify -}}
{{- else }}
{{- .Lang | title -}}
{{- end -}}
</a>
</li>
{{- end -}}
{{- end}}
</ul>
{{- end }}
</div>
</div>
{{- $currentPage := . }}
{{ partial "menu.html" }}
</nav>
</header>

View file

@ -0,0 +1,37 @@
<style>
.menu {
display: flex;
flex-wrap: wrap; /* Allow items to wrap onto multiple lines */
list-style: none;
margin: 0; /* Remove default margin */
padding: 0; /* Remove default padding */
justify-content: flex-end; /* Align items to the right */
}
.menu li {
margin: 0 10px; /* Add spacing between menu items */
display: inline-flex; /* Align emoji and text inline */
align-items: center; /* Vertically center emoji and text */
}
.menu li a {
margin-left: 5px; /* Add spacing between emoji and text */
text-decoration: none; /* Remove underline */
}
.menu li a:hover {
text-decoration: underline; /* Add underline on hover */
}
</style>
<ul class="menu">
<li>📝<a href="blog">Blog</a></li>
<p> · </p>
<li>📠<a href="collection">Machines</a></li>
<p> · </p>
<li>🔗<a href="liens">Liens</a></li>
<p> · </p>
<li>📖<a href="livres">Lectures</a></li>
<p> · </p>
<li>🌐<a href="blogroll">Blogroll</a></li>
<p> · </p>
<li><a href="a-propos">A propos</a></li>
<p> · </p>
<li>✉️<a href="contact">Contact</a></li>
</ul>

View file

@ -4,6 +4,9 @@
## Page d'accueil
- [ ] Mettre "une machie au pif" avec du javascript qui en tire une au hazard
- [ ] si pas d'image de cover dans un article, la box doit réagir (ajdh elle ne s'affiche pas du tout)
- [ ] Lien flux rss en bas de page
### Scrolling posts
- [x] add a blur to backgound images of scrolling posts
@ -14,7 +17,25 @@
- [ ] corriger le bout gris qui dépasse dans les radius des scrolling-list-item
- [ ] Faire le blur avec du css et non le trautement d'image HUgo
### Collection
## Galleries
- [x] fix le nouveau shortcode "gallery"
- [ ] ajouter une optimisation qui traite automatiquement les images dans les galleries en les resizant à la largeur de la page et en les transformant en .webp
## Contenu
- [ ] Ecrire blogroll
- [ ] Ecrire contact page
- [ ] ecrire à propos page
- [ ] Ajouter un colophon
## Livres
- [ ] Créer une infobox
- [ ] Choper automatiquement les infos pour le livre en partant de l'ISBN
## Collection
- [x] changer l'affichage des machines à écrire dans colleciton en grid, avec le titre et une image
- [ ] finir de créer le contenu de l'encadré de fiche technique pour les màe
@ -24,29 +45,26 @@
- [ ] Rendre adaptatifs au theme les encadrés de machines
- [ ] Mettre un traitement pour les images dans l'encadré
### Galleries
- [x] fix le nouveau shortcode "gallery"
- [ ] ajouter une optimisation qui traite automatiquement les images dans les galleries en les resizant à la largeur de la page et en les transformant en .webp
## Decap CMS
### Autre
- [ ] réhéberger TPE & PEM2T (et autres trucs chez OVH) en local
- [ ] make it so the 404 page works
- [ ] Ajouter un colophon
- [ ] Mis à jour la dernière fois le
- [ ] Installer decap CMS
- [x] Faire fonctionner l'auth avec forgejo
- [ ] Configurer decap CMS pour qu'il affiche les posts, et fonctionne avec les page bundles
- [ ] Configurer les galleries dans Decap CMS
## Autres
- [ ] réhéberger TPE & PEM2T (et autres trucs chez OVH) en local
- [ ] make it so the 404 page works
- [ ] Mis à jour la dernière fois le
- [ ] Ajouter des catégories aux articles et une liste de catégories sur page accueil
- [ ] Boutons grossissent quand la souris est dessus, comme https://88x31.kate.pet/
- [x] Fix é (UTF8 ?) sur le site hébergé
- [x] Réparer le bouton de thème
- [ ] Dates en francais ou en ISO8601
- [ ] Réparer le bouton de thème
## Contenu
- [ ] Ecrire blogroll
- [ ] Ecrire contact page
- [ ] ecrire à propos page
- [ ] Mettre en forme flux RSS
- [x] Mettre le meme menu sur toutes les pages
- [ ] Rendre le menu caché dans un hamburger sur mobile

View file

@ -6,7 +6,7 @@
--header-height: 60px;
--footer-height: 60px;
--radius: 8px;
--theme: rgb(255, 255, 255);
--theme: rgb(240, 240, 240);
--entry: rgb(255, 255, 255);
--primary: rgb(30, 30, 30);
--secondary: rgb(108, 108, 108);