add static builder
This commit is contained in:
33
content/templates/about.html
Normal file
33
content/templates/about.html
Normal file
@@ -0,0 +1,33 @@
|
||||
{% extends "default.html" %}
|
||||
|
||||
{% block content %}
|
||||
<main role="main" class="container space-y-12">
|
||||
<div class="space-y-3">
|
||||
<h2 class="text-xl font-semibold text-gray-800 leading-none">
|
||||
Travail…
|
||||
</h2>
|
||||
<p class="prose">
|
||||
Je suis actuellement freelance <a href="https://laravel.com">Laravel</a> (développement et formation).<br>
|
||||
Je travaille pour la plateforme publique <a href="https://data.gouv.fr">data.gouv.fr</a> en Python.<br>
|
||||
J'enseigne également la programmation <a href="https://www.youtube.com/user/tdauce">sur YouTube</a> et <a href="https://www.formation-laravel.fr">en entreprise</a>.<br>
|
||||
J'ai co-fondé <a href="https://www.quantic-telecom.net">Quantic Telecom</a>, un fournisseur d'accès à Internet.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="space-y-3">
|
||||
<h2 class="text-xl font-semibold text-gray-800 leading-none">
|
||||
Lectures…
|
||||
</h2>
|
||||
<p class="prose">
|
||||
<a href="https://fr.wikipedia.org/wiki/La_Roue_du_temps">La Roue du temps</a> de Robert Jordan sur ma <a href="https://www.fnac.com/Liseuse-numerique-Kobo-by-Fnac-Libra-H2O-7-8-Go-H2O-Noir/a13681417/w-4">Kobo Libra H2O</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div class="space-y-3">
|
||||
<h2 class="text-xl font-semibold text-gray-800 leading-none">
|
||||
Autres…
|
||||
</h2>
|
||||
<p class="prose">
|
||||
Je lance actuellement <a href="https://moulin.olla.fr">un espace de coworking et une salle de bloc</a> dans mon village.
|
||||
</p>
|
||||
</div>
|
||||
</main>
|
||||
{% endblock content %}
|
||||
58
content/templates/default.html
Normal file
58
content/templates/default.html
Normal file
@@ -0,0 +1,58 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<title>{{ title }} — Thibaud Ollagnier</title>
|
||||
<link rel="stylesheet" href="/css/app.css"/>
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" title="Thibaud Dauce" href="/feed.xml">
|
||||
<link rel="shortcut icon" href="/images/favicon.png">
|
||||
|
||||
<meta property="og:title" content="{{ title }}">
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:site" content="@ThibaudDauce" />
|
||||
{% if description %}
|
||||
<meta property="og:description" content="{{ description }}">
|
||||
{% endif %}
|
||||
</head>
|
||||
<body class="overflow-x-hidden bg-gray-100 text-black font-serif leading-normal min-h-screen flex flex-col py-6 sm:py-12">
|
||||
<header class="container mb-12 space-y-4">
|
||||
<div>
|
||||
<h2 class="sm:text-lg font-normal flex items-center gap-2">
|
||||
<a href="/" class="text-gray-900">Thibaud Ollagnier</a>
|
||||
<a href="https://discordapp.com/invite/tPtVM9V">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="fill-current text-gray-700 size-5" viewBox="0 0 245 240"><path d="M104.4 103.9c-5.7 0-10.2 5-10.2 11.1s4.6 11.1 10.2 11.1c5.7 0 10.2-5 10.2-11.1.1-6.1-4.5-11.1-10.2-11.1zM140.9 103.9c-5.7 0-10.2 5-10.2 11.1s4.6 11.1 10.2 11.1c5.7 0 10.2-5 10.2-11.1s-4.5-11.1-10.2-11.1z"/><path d="M189.5 20h-134C44.2 20 35 29.2 35 40.6v135.2c0 11.4 9.2 20.6 20.5 20.6h113.4l-5.3-18.5 12.8 11.9 12.1 11.2 21.5 19V40.6c0-11.4-9.2-20.6-20.5-20.6zm-38.6 130.6s-3.6-4.3-6.6-8.1c13.1-3.7 18.1-11.9 18.1-11.9-4.1 2.7-8 4.6-11.5 5.9-5 2.1-9.8 3.5-14.5 4.3-9.6 1.8-18.4 1.3-25.9-.1-5.7-1.1-10.6-2.7-14.7-4.3-2.3-.9-4.8-2-7.3-3.4-.3-.2-.6-.3-.9-.5-.2-.1-.3-.2-.4-.3-1.8-1-2.8-1.7-2.8-1.7s4.8 8 17.5 11.8c-3 3.8-6.7 8.3-6.7 8.3-22.1-.7-30.5-15.2-30.5-15.2 0-32.2 14.4-58.3 14.4-58.3 14.4-10.8 28.1-10.5 28.1-10.5l1 1.2c-18 5.2-26.3 13.1-26.3 13.1s2.2-1.2 5.9-2.9c10.7-4.7 19.2-6 22.7-6.3.6-.1 1.1-.2 1.7-.2 6.1-.8 13-1 20.2-.2 9.5 1.1 19.7 3.9 30.1 9.6 0 0-7.9-7.5-24.9-12.7l1.4-1.6s13.7-.3 28.1 10.5c0 0 14.4 26.1 14.4 58.3 0 0-8.5 14.5-30.6 15.2z"/></svg>
|
||||
</a>
|
||||
</h2>
|
||||
<h1 class="text-xl sm:text-2xl font-normal">{{ title }}</h1>
|
||||
</div>
|
||||
<nav class="flex items-center gap-3 text-sm sm:text-base leading-none">
|
||||
<a href="/" class="font-semibold {% if blog %} text-black {% else %} text-gray-600 hover:text-black {% endif %}">Blog</a>
|
||||
|
||||
<span class="hidden sm:inline size-1 rounded-full bg-gray-500"></span>
|
||||
|
||||
<a href="/talks.html" class="font-semibold {% if talks %} text-black {% else %} text-gray-600 hover:text-black {% endif %}">Conférences</a>
|
||||
|
||||
<span class="hidden sm:inline size-1 rounded-full bg-gray-500"></span>
|
||||
|
||||
<a href="https://www.youtube.com/user/tdauce/" class="font-semibold text-gray-600 hover:text-black">Vidéos</a>
|
||||
|
||||
<span class="hidden sm:inline size-1 rounded-full bg-gray-500"></span>
|
||||
|
||||
<a href="/about.html" class="font-semibold {% if about %} text-black {% else %} text-gray-600 hover:text-black {% endif %}">À propos</a>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
{% block content %}
|
||||
{% endblock content %}
|
||||
|
||||
<footer class="container py-12 mt-12 text-sm text-gray-800">
|
||||
<p>
|
||||
Ce blog est généré statiquement en Rust. Si vous trouvez une faute ou un problème, <a href="https://github.com/ThibaudDauce/thibaud.dauce.fr" class="text-indigo-600 italic underline">vous pouvez contribuer via Github</a>.
|
||||
</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
46
content/templates/hiking.html
Normal file
46
content/templates/hiking.html
Normal file
@@ -0,0 +1,46 @@
|
||||
{% extends "default.html" %}
|
||||
|
||||
{% block content %}
|
||||
<div id="map" class="w-full" style="height: 50rem"></div>
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js"></script>
|
||||
<script>
|
||||
var map = L.map('map').setView(new L.LatLng(46.498, 2.197), 7);
|
||||
|
||||
var googleSat = L.tileLayer('https://{s}.google.com/vt/lyrs=s,h&x={x}&y={y}&z={z}', {
|
||||
maxZoom: 20,
|
||||
subdomains: ['mt0', 'mt1', 'mt2', 'mt3']
|
||||
}).addTo(map);
|
||||
|
||||
function loadGPX(trace, color, popup) {
|
||||
new L.GPX('/traces/' + trace, {
|
||||
async: true,
|
||||
marker_options: {
|
||||
iconSize: [11, 15],
|
||||
shadowSize: [16.6, 16.6],
|
||||
iconAnchor: [5.3, 15],
|
||||
shadowAnchor: [5.3, 15.6],
|
||||
startIconUrl: '/images/pin-icon-start.png',
|
||||
endIconUrl: '/images/pin-icon-end.png',
|
||||
shadowUrl: '/images/pin-shadow.png',
|
||||
},
|
||||
polyline_options: {
|
||||
color: color,
|
||||
opacity: 1,
|
||||
weight: 4,
|
||||
lineCap: 'round'
|
||||
}
|
||||
}).on('addpoint', function(e) {
|
||||
e.target.bindPopup(popup)
|
||||
}).addTo(map)
|
||||
}
|
||||
|
||||
{% for trip in trips %}
|
||||
{% for trace in trip.traces %}
|
||||
loadGPX('{{ trace.path | safe }}', '{{ trip.color }}', "<b>{{ trip.type_as_string }} {{ trip.name }} de {{ trip.date }}</b><br>Distance : {{ trip.distance_format }}<br>Dénivelé: +{{ trip.elevation_positive_format }} | -{{ trip.elevation_negative_format }}<br><br><b>Segment {{ trace.name }}</b><br>Distance : {{ trace.distance_format }}<br>Dénivelé: +{{ trace.elevation_positive_format }} | -{{ trace.elevation_negative_format }}");
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</script>
|
||||
{% endblock content %}
|
||||
30
content/templates/index.html
Normal file
30
content/templates/index.html
Normal file
@@ -0,0 +1,30 @@
|
||||
{% extends "default.html" %}
|
||||
|
||||
{% block content %}
|
||||
<main role="main" class="container space-y-12">
|
||||
{% for post in posts | reverse %}
|
||||
<div class="space-y-2">
|
||||
<h2 class="flex flex-col gap-2">
|
||||
<span class="text-sm font-semibold text-gray-600 leading-none whitespace-nowrap">
|
||||
{% if post.lang == "en" %}
|
||||
{{ post.date_en }}
|
||||
{% else %}
|
||||
Le {{ post.date_fr }}
|
||||
{% endif %}
|
||||
</span>
|
||||
<a href="{{ post.url }}" class="text-xl font-semibold text-gray-800 leading-none hover:underline">
|
||||
{{ post.title }}
|
||||
</a>
|
||||
</h2>
|
||||
|
||||
{% if loop.index < 20 %}
|
||||
<div class="prose">
|
||||
{% if post.description %}
|
||||
{{ post.description }}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</main>
|
||||
{% endblock content %}
|
||||
19
content/templates/post.html
Normal file
19
content/templates/post.html
Normal file
@@ -0,0 +1,19 @@
|
||||
{% extends "default.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<main role="main" class="container space-y-6">
|
||||
<p class="text-sm text-gray-600 italic">
|
||||
{% if post.lang == "en" %}
|
||||
Published {{ post.date_en }}
|
||||
{% else %}
|
||||
Publié le {{ post.date_fr }}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
<div class="prose">
|
||||
{{ post.html | safe }}
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{% endblock content %}
|
||||
21
content/templates/rss.xml.html
Normal file
21
content/templates/rss.xml.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<channel>
|
||||
<title>Thibaud Dauce</title>
|
||||
<link>https://thibaud.dauce.fr</link>
|
||||
<description><![CDATA[All Thibaud Dauce's articles]]></description>
|
||||
<atom:link href="https://thibaud.dauce.fr/feed.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>{{ latest_post.date_rss }}</lastBuildDate>
|
||||
{% for post in posts | reverse %}
|
||||
<item>
|
||||
<title><![CDATA[{{ post.title|safe }}]]></title>
|
||||
<link>https://thibaud.dauce.fr{{ post.url|safe }}</link>
|
||||
<description><![CDATA[{{ post.html|safe }}]]></description>
|
||||
<pubDate>{{ post.date_rss }}</pubDate>
|
||||
<guid>https://thibaud.dauce.fr{{ post.url|safe }}</guid>
|
||||
<dc:creator>Thibaud Dauce</dc:creator>
|
||||
</item>
|
||||
{% endfor %}
|
||||
</channel>
|
||||
</rss>
|
||||
43
content/templates/talks.html
Normal file
43
content/templates/talks.html
Normal file
@@ -0,0 +1,43 @@
|
||||
{% extends "default.html" %}
|
||||
|
||||
{% block content %}
|
||||
<main role="main" class="container space-y-16">
|
||||
{% for talk in talks | reverse %}
|
||||
<div class="space-y-4">
|
||||
<h2 class="flex flex-col gap-2">
|
||||
<span class="text-sm font-semibold text-gray-600 leading-none whitespace-nowrap">
|
||||
Le {{ talk.date_fr }}
|
||||
</span>
|
||||
<span class="text-xl font-semibold text-gray-800 leading-none">
|
||||
{{ talk.title }}
|
||||
</span>
|
||||
</h2>
|
||||
|
||||
<div class="prose">
|
||||
{{ talk.html | safe }}
|
||||
</div>
|
||||
|
||||
<div class="flex gap-4">
|
||||
{% if talk.slides %}
|
||||
<a href="{{ talk.slides }}" class="flex items-center gap-1 text-sm font-semibold text-gray-800">
|
||||
<svg class="size-4 fill-current" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M0 4c0-1.1.9-2 2-2h7l2 2h7a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2 2v10h16V6H2z"/></svg>
|
||||
<span>Slides</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if talk.video %}
|
||||
<a href="{{ talk.video }}" class="flex items-center gap-1 text-sm font-semibold text-gray-800">
|
||||
<svg class="size-4 fill-current" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.93 17.07A10 10 0 1 1 17.07 2.93 10 10 0 0 1 2.93 17.07zm12.73-1.41A8 8 0 1 0 4.34 4.34a8 8 0 0 0 11.32 11.32zM7 6l8 4-8 4V6z"/></svg>
|
||||
<span>Video</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if talk.tweet %}
|
||||
<a href="{{ talk.tweet }}" class="flex items-center gap-1 text-sm font-semibold text-gray-800">
|
||||
<svg class="size-4 fill-current" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1684 408q-67 98-162 167 1 14 1 42 0 130-38 259.5t-115.5 248.5-184.5 210.5-258 146-323 54.5q-271 0-496-145 35 4 78 4 225 0 401-138-105-2-188-64.5t-114-159.5q33 5 61 5 43 0 85-11-112-23-185.5-111.5t-73.5-205.5v-4q68 38 146 41-66-44-105-115t-39-154q0-88 44-163 121 149 294.5 238.5t371.5 99.5q-8-38-8-74 0-134 94.5-228.5t228.5-94.5q140 0 236 102 109-21 205-78-37 115-142 178 93-10 186-50z"/></svg>
|
||||
<span>Tweet</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</main>
|
||||
{% endblock content %}
|
||||
Reference in New Issue
Block a user