Compare commits

...

10 Commits

Author SHA1 Message Date
a377dc1ad1 Nettoyage VSCode et préparation de l'atelier 2026-01-27 22:18:10 +04:00
02927c20a1 mercredi 20 2026-01-20 08:57:31 +04:00
9461b7349b final update2 2026-01-19 20:12:08 +04:00
e0ab1cd308 final update2 2026-01-19 20:08:18 +04:00
cca2f9529a final update 2026-01-19 20:05:35 +04:00
17faaa95b3 dernière ligne virtuel du 19 2026-01-19 19:51:57 +04:00
06a0fd3914 livre à acheter 2026-01-19 18:52:53 +04:00
48e5e4e42c lundi bujo tracker 2026-01-19 08:45:38 +04:00
16808c22bd lundi bujo completion start 2026-01-19 08:36:34 +04:00
25abb8fcc9 lundi bujo 2026-01-19 08:33:22 +04:00
26 changed files with 549 additions and 138 deletions

View File

@@ -1,4 +0,0 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}

11
.vscode/launch.json vendored
View File

@@ -1,11 +0,0 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}

99
package-lock.json generated
View File

@@ -10,7 +10,7 @@
"dependencies": { "dependencies": {
"@astrojs/mdx": "^4.3.13", "@astrojs/mdx": "^4.3.13",
"@tailwindcss/vite": "^4.1.18", "@tailwindcss/vite": "^4.1.18",
"astro": "^5.16.8", "astro": "^5.16.15",
"tailwindcss": "^4.1.18" "tailwindcss": "^4.1.18"
} }
}, },
@@ -2057,9 +2057,9 @@
} }
}, },
"node_modules/astro": { "node_modules/astro": {
"version": "5.16.8", "version": "5.16.15",
"resolved": "https://registry.npmjs.org/astro/-/astro-5.16.8.tgz", "resolved": "https://registry.npmjs.org/astro/-/astro-5.16.15.tgz",
"integrity": "sha512-gzZE+epuCrNuxOa8/F1dzkllDOFvxWhGeobQKeBRIAef5sUpUKMHZo/8clse+02rYnKJCgwXBgjW4uTu9mqUUw==", "integrity": "sha512-+X1Z0NTi2pa5a0Te6h77Dgc44fYj63j1yx6+39Nvg05lExajxSq7b1Uj/gtY45zoum8fD0+h0nak+DnHighs3A==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@astrojs/compiler": "^2.13.0", "@astrojs/compiler": "^2.13.0",
@@ -2080,8 +2080,8 @@
"cssesc": "^3.0.0", "cssesc": "^3.0.0",
"debug": "^4.4.3", "debug": "^4.4.3",
"deterministic-object-hash": "^2.0.2", "deterministic-object-hash": "^2.0.2",
"devalue": "^5.6.1", "devalue": "^5.6.2",
"diff": "^5.2.0", "diff": "^8.0.3",
"dlv": "^1.1.3", "dlv": "^1.1.3",
"dset": "^3.1.4", "dset": "^3.1.4",
"es-module-lexer": "^1.7.0", "es-module-lexer": "^1.7.0",
@@ -2106,16 +2106,16 @@
"prompts": "^2.4.2", "prompts": "^2.4.2",
"rehype": "^13.0.2", "rehype": "^13.0.2",
"semver": "^7.7.3", "semver": "^7.7.3",
"shiki": "^3.20.0", "shiki": "^3.21.0",
"smol-toml": "^1.6.0", "smol-toml": "^1.6.0",
"svgo": "^4.0.0", "svgo": "^4.0.0",
"tinyexec": "^1.0.2", "tinyexec": "^1.0.2",
"tinyglobby": "^0.2.15", "tinyglobby": "^0.2.15",
"tsconfck": "^3.1.6", "tsconfck": "^3.1.6",
"ultrahtml": "^1.6.0", "ultrahtml": "^1.6.0",
"unifont": "~0.7.1", "unifont": "~0.7.3",
"unist-util-visit": "^5.0.0", "unist-util-visit": "^5.0.0",
"unstorage": "^1.17.3", "unstorage": "^1.17.4",
"vfile": "^6.0.3", "vfile": "^6.0.3",
"vite": "^6.4.1", "vite": "^6.4.1",
"vitefu": "^1.1.1", "vitefu": "^1.1.1",
@@ -2270,15 +2270,15 @@
} }
}, },
"node_modules/chokidar": { "node_modules/chokidar": {
"version": "4.0.3", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"readdirp": "^4.0.1" "readdirp": "^5.0.0"
}, },
"engines": { "engines": {
"node": ">= 14.16.0" "node": ">= 20.19.0"
}, },
"funding": { "funding": {
"url": "https://paulmillr.com/funding/" "url": "https://paulmillr.com/funding/"
@@ -2542,9 +2542,9 @@
} }
}, },
"node_modules/devalue": { "node_modules/devalue": {
"version": "5.6.1", "version": "5.6.2",
"resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.1.tgz", "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz",
"integrity": "sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A==", "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/devlop": { "node_modules/devlop": {
@@ -2561,9 +2561,9 @@
} }
}, },
"node_modules/diff": { "node_modules/diff": {
"version": "5.2.0", "version": "8.0.3",
"resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz",
"integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"engines": { "engines": {
"node": ">=0.3.1" "node": ">=0.3.1"
@@ -2962,9 +2962,9 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/h3": { "node_modules/h3": {
"version": "1.15.4", "version": "1.15.5",
"resolved": "https://registry.npmjs.org/h3/-/h3-1.15.4.tgz", "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.5.tgz",
"integrity": "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==", "integrity": "sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"cookie-es": "^1.2.2", "cookie-es": "^1.2.2",
@@ -2972,9 +2972,9 @@
"defu": "^6.1.4", "defu": "^6.1.4",
"destr": "^2.0.5", "destr": "^2.0.5",
"iron-webcrypto": "^1.2.1", "iron-webcrypto": "^1.2.1",
"node-mock-http": "^1.0.2", "node-mock-http": "^1.0.4",
"radix3": "^1.1.2", "radix3": "^1.1.2",
"ufo": "^1.6.1", "ufo": "^1.6.3",
"uncrypto": "^0.1.3" "uncrypto": "^0.1.3"
} }
}, },
@@ -3660,10 +3660,13 @@
} }
}, },
"node_modules/lru-cache": { "node_modules/lru-cache": {
"version": "10.4.3", "version": "11.2.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz",
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==",
"license": "ISC" "license": "BlueOak-1.0.0",
"engines": {
"node": "20 || >=22"
}
}, },
"node_modules/magic-string": { "node_modules/magic-string": {
"version": "0.30.21", "version": "0.30.21",
@@ -5049,12 +5052,12 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/readdirp": { "node_modules/readdirp": {
"version": "4.1.2", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz",
"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">= 14.18.0" "node": ">= 20.19.0"
}, },
"funding": { "funding": {
"type": "individual", "type": "individual",
@@ -5769,9 +5772,9 @@
} }
}, },
"node_modules/ufo": { "node_modules/ufo": {
"version": "1.6.2", "version": "1.6.3",
"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.2.tgz", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz",
"integrity": "sha512-heMioaxBcG9+Znsda5Q8sQbWnLJSl98AFDXTO80wELWEzX3hordXsTdxrIfMQoO9IY1MEnoGoPjpoKpMj+Yx0Q==", "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/ultrahtml": { "node_modules/ultrahtml": {
@@ -5806,9 +5809,9 @@
} }
}, },
"node_modules/unifont": { "node_modules/unifont": {
"version": "0.7.1", "version": "0.7.3",
"resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.1.tgz", "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.3.tgz",
"integrity": "sha512-0lg9M1cMYvXof8//wZBq6EDEfbwv4++t7+dYpXeS2ypaLuZJmUFYEwTm412/1ED/Wfo/wyzSu6kNZEr9hgRNfg==", "integrity": "sha512-b0GtQzKCyuSHGsfj5vyN8st7muZ6VCI4XD4vFlr7Uy1rlWVYxC3npnfk8MyreHxJYrz1ooLDqDzFe9XqQTlAhA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"css-tree": "^3.1.0", "css-tree": "^3.1.0",
@@ -5953,19 +5956,19 @@
} }
}, },
"node_modules/unstorage": { "node_modules/unstorage": {
"version": "1.17.3", "version": "1.17.4",
"resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.3.tgz", "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.4.tgz",
"integrity": "sha512-i+JYyy0DoKmQ3FximTHbGadmIYb8JEpq7lxUjnjeB702bCPum0vzo6oy5Mfu0lpqISw7hCyMW2yj4nWC8bqJ3Q==", "integrity": "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"anymatch": "^3.1.3", "anymatch": "^3.1.3",
"chokidar": "^4.0.3", "chokidar": "^5.0.0",
"destr": "^2.0.5", "destr": "^2.0.5",
"h3": "^1.15.4", "h3": "^1.15.5",
"lru-cache": "^10.4.3", "lru-cache": "^11.2.0",
"node-fetch-native": "^1.6.7", "node-fetch-native": "^1.6.7",
"ofetch": "^1.5.1", "ofetch": "^1.5.1",
"ufo": "^1.6.1" "ufo": "^1.6.3"
}, },
"peerDependencies": { "peerDependencies": {
"@azure/app-configuration": "^1.8.0", "@azure/app-configuration": "^1.8.0",
@@ -5974,14 +5977,14 @@
"@azure/identity": "^4.6.0", "@azure/identity": "^4.6.0",
"@azure/keyvault-secrets": "^4.9.0", "@azure/keyvault-secrets": "^4.9.0",
"@azure/storage-blob": "^12.26.0", "@azure/storage-blob": "^12.26.0",
"@capacitor/preferences": "^6.0.3 || ^7.0.0", "@capacitor/preferences": "^6 || ^7 || ^8",
"@deno/kv": ">=0.9.0", "@deno/kv": ">=0.9.0",
"@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0",
"@planetscale/database": "^1.19.0", "@planetscale/database": "^1.19.0",
"@upstash/redis": "^1.34.3", "@upstash/redis": "^1.34.3",
"@vercel/blob": ">=0.27.1", "@vercel/blob": ">=0.27.1",
"@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/functions": "^2.2.12 || ^3.0.0",
"@vercel/kv": "^1.0.1", "@vercel/kv": "^1 || ^2 || ^3",
"aws4fetch": "^1.0.20", "aws4fetch": "^1.0.20",
"db0": ">=0.2.1", "db0": ">=0.2.1",
"idb-keyval": "^6.2.1", "idb-keyval": "^6.2.1",

View File

@@ -11,7 +11,7 @@
"dependencies": { "dependencies": {
"@astrojs/mdx": "^4.3.13", "@astrojs/mdx": "^4.3.13",
"@tailwindcss/vite": "^4.1.18", "@tailwindcss/vite": "^4.1.18",
"astro": "^5.16.8", "astro": "^5.16.15",
"tailwindcss": "^4.1.18" "tailwindcss": "^4.1.18"
} }
} }

View File

@@ -52,7 +52,6 @@ const { months } = Astro.props;
<ul class="list-disc list-inside space-y-2 text-sm"> <ul class="list-disc list-inside space-y-2 text-sm">
<li><a href="/bujo/collections/livres-a-lire" class="text-blue-600 hover:underline">Livres à lire</a></li> <li><a href="/bujo/collections/livres-a-lire" class="text-blue-600 hover:underline">Livres à lire</a></li>
<li><a href="/bujo/collections/films-a-voir" class="text-blue-600 hover:underline">Films & Séries à voir</a></li> <li><a href="/bujo/collections/films-a-voir" class="text-blue-600 hover:underline">Films & Séries à voir</a></li>
<li><a href="/bujo/collections/idees-projets" class="text-blue-600 hover:underline">Idées de Projets Créatifs</a></li>
</ul> </ul>
</div> </div>
</div> </div>

View File

@@ -44,7 +44,7 @@
<p>* • Finaliser le projet A</p> <p>* • Finaliser le projet A</p>
<p>$ Penser à renouveler l'abonnement</p> <p>$ Penser à renouveler l'abonnement</p>
<p>! △ La patience est la forme la plus douce du courage.</p> <p>! △ La patience est la forme la plus douce du courage.</p>
<p>○ Dîner avec Marc à 20h</p> <p>○ Passer faire coucou à Sofia en métropole</p>
</div> </div>
</section> </section>
</div> </div>

View File

@@ -2,6 +2,7 @@
// Exemple de données. Plus tard, cela pourrait venir de fichiers de contenu. // Exemple de données. Plus tard, cela pourrait venir de fichiers de contenu.
const books = [ const books = [
{ title: "Vers la beauté", author: "David Foenkinos", status: "En cours" }, { title: "Vers la beauté", author: "David Foenkinos", status: "En cours" },
{ title: "La huitième couleur", author: "Terry Pratchett", status: "À acheter" },
]; ];
const booksByStatus = { const booksByStatus = {

View File

@@ -2,7 +2,6 @@
// Exemple de données. Plus tard, cela pourrait venir de fichiers de contenu. // Exemple de données. Plus tard, cela pourrait venir de fichiers de contenu.
const habits = [ const habits = [
"Sport (3x/sem)", "Sport (3x/sem)",
"Méditation",
"Lecture", "Lecture",
"Écriture (Log/Journal)", "Écriture (Log/Journal)",
"Pratique du code", "Pratique du code",
@@ -15,12 +14,11 @@ const daysInMonth = 31; // Pour Janvier, à rendre dynamique plus tard
// C'est ici que vous contrôlez l'état du tracker. // C'est ici que vous contrôlez l'état du tracker.
// Pour chaque habitude, listez les jours où elle a été complétée. // Pour chaque habitude, listez les jours où elle a été complétée.
const completedHabits = { const completedHabits = {
"Sport (3x/sem)": [], "Sport (3x/sem)": [19],
"Méditation": [], "Lecture": [19],
"Lecture": [], "Écriture (Log/Journal)": [17,18,19],
"Écriture (Log/Journal)": [17, 18], "Pratique du code": [17,18,19],
"Pratique du code": [17,18], "Budget respecté": [19],
"Budget respecté": [],
"Coucher avant 23h": [], "Coucher avant 23h": [],
}; };
--- ---

View File

@@ -1,10 +0,0 @@
---
// Ce composant accepte les props SVG standards comme `class`.
const { ...props } = Astro.props;
---
<svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M8 21h12a2 2 0 0 0 2-2v-2H10v2a2 2 0 0 1-2 2Z"></path>
<path d="M4 21a2 2 0 0 1-2-2v-2h10v4H4Z"></path>
<path d="M4 5v12h16V5a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2Z"></path>
</svg>

36
src/content.config.ts Normal file
View File

@@ -0,0 +1,36 @@
import { defineCollection, z } from 'astro:content';
import { glob } from 'astro/loaders';
const bujo = defineCollection({
loader: glob({ pattern: '**/[^_]*.{md,mdx}', base: "./src/content/bujo" }),
schema: z.object({
title: z.string(),
publishDate: z.date(),
}).passthrough(),
});
const codex = defineCollection({
loader: glob({ pattern: '**/[^_]*.{md,mdx}', base: "./src/content/codex" }),
schema: z.object({}).passthrough(), // TODO: Définir un schéma plus strict
});
const journal = defineCollection({
loader: glob({ pattern: '**/[^_]*.{md,mdx}', base: "./src/content/journal" }),
schema: z.object({
title: z.string(),
author: z.string(),
publishDate: z.date(),
tags: z.array(z.string()),
}).passthrough(),
});
const logs = defineCollection({
loader: glob({ pattern: '**/[^_]*.{md,mdx}', base: "./src/content/logs" }),
schema: z.object({
title: z.string(),
publishDate: z.date(),
tags: z.array(z.string()),
}).passthrough(),
});
export const collections = { bujo, codex, journal, logs };

View File

@@ -0,0 +1,62 @@
---
title: "Daily Log - 19 Janvier 2026"
publishDate: 2026-01-19
tags: ["Daily", "Work", "Organisation"]
---
import Key from '~/components/bujo/Key.astro';
<div class="mb-8 p-4 bg-blue-50 border-l-4 border-blue-400">
<h2 class="text-xl font-bold text-slate-800 mb-2"><Key symbol="⚓" /> Ancrage & Bien-être</h2>
<ul class="space-y-2">
<li><Key symbol="X" /> Routine du matin (douche, dents...)</li>
<li><Key symbol="X" /> Activité physique douce (étirements, marche...)</li>
<li><Key symbol="" /> Qualité du sommeil (1-5) : 4</li>
<li><Key symbol="" /> Humeur du jour (1-5) : 5</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="*" /> Priorités du Jour (Pro & Perso)</h2>
<p class="text-sm text-slate-500 mb-3">Se concentrer sur 1 à 3 tâches essentielles pour avancer.</p>
<ul class="space-y-2">
<li><Key symbol="X" /> [Tâche pro n°1]</li>
<li><Key symbol=">" /> [Tâche pro n°2]</li>
<li><Key symbol=">" /> [Tâche perso importante]</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="$" /> Organisation & Budget</h2>
<ul class="space-y-2">
<li><Key symbol="X" /> Planifier le repas du soir</li>
<li><Key symbol="<" /> Point rapide sur les comptes</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="•" /> Foyer & Routine du soir</h2>
<ul class="space-y-2">
<li><Key symbol="X" /> Remplir mon carnet à dessin et projets</li>
<li><Key symbol=">" /> Ranger l'espace de travail (5 min)</li>
<li><Key symbol="X" /> Préparer les affaires pour demain</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="♡" /> Loisirs & Note du jour</h2>
<p class="text-slate-600 mt-2">Un moment pour soi, une pensée, une petite victoire :</p>
<p class="mt-4 p-3 bg-amber-50 text-amber-900 border-l-4 border-amber-400 rounded-r-lg italic">Ce matin réveil à l'heure, j'étais trop bien dans mon lit... Je sentait que ma nuit a était reposante. J'avais pas trop de douleur, ça tirait un peu, juste assez pour que je me rende compte que ça ne me faisait pas mal. je suis partie de chez moi à vélo, en forme et avec un moral d'acier fort d'avoir réalisé ce bel outil hier... De samedi j'ai eu un appel concernant LEO qui demandait à mettre un article au tarif défini, le problème c'est que c'est la 5ème fois qu'il mappelle pour ce type d'article. Alors je me suis investi d'une mission aujourd'hui, mettre en lumière l'erreur et faire en sorte de structurer un tableur avec toute les corrections à mettre en place. Ce qui a était fait bon j'ai fini un peu plus tard que d'habitude mais ça en valait la peine. Peut-être diront-il demain que ça ne sert à rien. En tout cas moi je sais que ça sert à quelque chose. Ce soir j'ai commencé à remplir mon BUJO. Mais je dois surtout organiser des tâches dans un véritable carnet et noter ce qui doit être améliorer ou modifier pour rendre ce travail loin d'être fastidieux. Ce soir ce sera simple au niveau du repas, rien de folichon, juste de quoi sustenter mon estomac. Il faudrait que je pense à la section recette. Pour les comptes, idem il faudrait que j'y penses également. Et aussi à améliorer chaque point de ce Bujo. Je dois aussi structurer mes routines pour l'entretien de ma maison. Il faudrait aussi peut-être que je penses à un petit espace de notification... Enfin à voir c'est pas le plus urgent. En attendant ce soir une fois que j'ai finaliser de remplir toute les sections on s'attarde dans un vrai carnet de note avec des crayons ^^</p>
<textarea id="daily-note-19" class="w-full mt-2 p-2 border rounded bg-slate-50" rows="2" placeholder="..."></textarea>
</div>
<script is:inline>
{`
document.addEventListener('DOMContentLoaded', () => {
const textarea = document.getElementById('daily-note-19');
const storageKey = 'note-/bujo/2026/01/19';
const savedNote = localStorage.getItem(storageKey);
if (savedNote) textarea.value = savedNote;
textarea.addEventListener('input', () => localStorage.setItem(storageKey, textarea.value));
});
`}
</script>

View File

@@ -0,0 +1,61 @@
---
title: "Daily Log - 20 Janvier 2026"
publishDate: 2026-01-20
tags: ["Daily", "Work", "Organisation"]
---
import Key from '~/components/bujo/Key.astro';
<div class="mb-8 p-4 bg-blue-50 border-l-4 border-blue-400">
<h2 class="text-xl font-bold text-slate-800 mb-2"><Key symbol="⚓" /> Ancrage & Bien-être</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Routine du matin (douche, dents...)</li>
<li><Key symbol="•" /> Activité physique douce (étirements, marche...)</li>
<li><Key symbol="" /> Qualité du sommeil (1-5) : __</li>
<li><Key symbol="" /> Humeur du jour (1-5) : __</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="*" /> Priorités du Jour (Pro & Perso)</h2>
<p class="text-sm text-slate-500 mb-3">Se concentrer sur 1 à 3 tâches essentielles pour avancer.</p>
<ul class="space-y-2">
<li><Key symbol="•" /> [Tâche pro n°2 d'hier]</li>
<li><Key symbol="•" /> [Tâche pro n°1]</li>
<li><Key symbol="•" /> [Tâche pro n°2]</li>
<li><Key symbol="•" /> [Tâche perso importante d'hier]</li>
<li><Key symbol="•" /> [Tâche perso importante]</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="$" /> Organisation & Budget</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Planifier le repas du soir</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="•" /> Foyer & Routine du soir</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Ranger l'espace de travail (10 min)</li>
<li><Key symbol="•" /> Préparer les affaires pour demain</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="♡" /> Loisirs & Note du jour</h2>
<p class="text-slate-600 mt-2">Un moment pour soi, une pensée, une petite victoire :</p>
<textarea id="daily-note-20" class="w-full mt-2 p-2 border rounded bg-slate-50" rows="2" placeholder="..."></textarea>
</div>
<script is:inline>
{`
document.addEventListener('DOMContentLoaded', () => {
const textarea = document.getElementById('daily-note-20');
const storageKey = 'note-/bujo/2026/01/20';
const savedNote = localStorage.getItem(storageKey);
if (savedNote) textarea.value = savedNote;
textarea.addEventListener('input', () => localStorage.setItem(storageKey, textarea.value));
});
`}
</script>

View File

@@ -0,0 +1,5 @@
---
title: "Fin des frais d'agence"
publishDate: 2026-08-01
tags: ["future-log", "pro"]
---

View File

@@ -0,0 +1,5 @@
---
title: "Publier la dernière mouture du site"
publishDate: 2026-02-01
tags: ["future-log", "pro"]
---

View File

@@ -0,0 +1,5 @@
---
title: "Plannifier mon mois de février"
publishDate: 2026-01-20
tags: ["future-log", "pro", "perso"]
---

View File

@@ -0,0 +1,5 @@
---
title: "Repas d'entreprise pour la cohésion d'équipe"
publishDate: 2026-02-15
tags: ["future-log", "pro"]
---

59
src/modele/dimanche.mdx Normal file
View File

@@ -0,0 +1,59 @@
---
title: "Daily Log - 25 Janvier 2026"
publishDate: 2026-01-25
tags: ["Daily", "Weekend", "Organisation"]
---
import Key from '~/components/bujo/Key.astro';
<div class="mb-8 p-4 bg-blue-50 border-l-4 border-blue-400">
<h2 class="text-xl font-bold text-slate-800 mb-2"><Key symbol="⚓" /> Ancrage & Bien-être</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Routine du matin (douche, dents...)</li>
<li><Key symbol="•" /> Activité physique douce (étirements, marche...)</li>
<li><Key symbol="" /> Qualité du sommeil (1-5) : __</li>
<li><Key symbol="" /> Humeur du jour (1-5) : __</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="*" /> Objectifs du Dimanche</h2>
<p class="text-sm text-slate-500 mb-3">Une ou deux choses pour profiter de la journée et se sentir bien.</p>
<ul class="space-y-2">
<li><Key symbol="•" /> [Objectif principal]</li>
<li><Key symbol="•" /> [Autre petite tâche]</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="$" /> Organisation & Budget</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Planifier les repas de la semaine à venir</li>
<li><Key symbol="👁️" /> Chercher une activité gratuite ou un bon plan</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="•" /> Foyer & Préparation de la semaine</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Session de rangement (15 min)</li>
<li><Key symbol="•" /> Préparer les vêtements pour lundi</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="♡" /> Loisirs & Note du jour</h2>
<p class="text-slate-600 mt-2">Un moment pour soi, une pensée, une petite victoire :</p>
<textarea id="daily-note-25" class="w-full mt-2 p-2 border rounded bg-slate-50" rows="2" placeholder="..."></textarea>
</div>
<script is:inline>
{`
document.addEventListener('DOMContentLoaded', () => {
const textarea = document.getElementById('daily-note-25');
const storageKey = 'note-/bujo/2026/01/25';
const savedNote = localStorage.getItem(storageKey);
if (savedNote) textarea.value = savedNote;
textarea.addEventListener('input', () => localStorage.setItem(storageKey, textarea.value));
});
`}
</script>

60
src/modele/jeudi.mdx Normal file
View File

@@ -0,0 +1,60 @@
---
title: "Daily Log - 22 Janvier 2026"
publishDate: 2026-01-22
tags: ["Daily", "Work", "Organisation"]
---
import Key from '~/components/bujo/Key.astro';
<div class="mb-8 p-4 bg-blue-50 border-l-4 border-blue-400">
<h2 class="text-xl font-bold text-slate-800 mb-2"><Key symbol="⚓" /> Ancrage & Bien-être</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Routine du matin (douche, dents...)</li>
<li><Key symbol="•" /> Activité physique douce (étirements, marche...)</li>
<li><Key symbol="" /> Qualité du sommeil (1-5) : __</li>
<li><Key symbol="" /> Humeur du jour (1-5) : __</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="*" /> Priorités du Jour (Pro & Perso)</h2>
<p class="text-sm text-slate-500 mb-3">Se concentrer sur 1 à 3 tâches essentielles pour avancer.</p>
<ul class="space-y-2">
<li><Key symbol="•" /> [Tâche pro n°1]</li>
<li><Key symbol="•" /> [Tâche pro n°2]</li>
<li><Key symbol="•" /> [Tâche perso importante]</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="$" /> Organisation & Budget</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Planifier le repas du soir</li>
<li><Key symbol="👁️" /> Point rapide sur les comptes</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="•" /> Foyer & Routine du soir</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Ranger l'espace de travail (5 min)</li>
<li><Key symbol="•" /> Préparer les affaires pour demain</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="♡" /> Loisirs & Note du jour</h2>
<p class="text-slate-600 mt-2">Un moment pour soi, une pensée, une petite victoire :</p>
<textarea id="daily-note-22" class="w-full mt-2 p-2 border rounded bg-slate-50" rows="2" placeholder="..."></textarea>
</div>
<script is:inline>
{`
document.addEventListener('DOMContentLoaded', () => {
const textarea = document.getElementById('daily-note-22');
const storageKey = 'note-/bujo/2026/01/22';
const savedNote = localStorage.getItem(storageKey);
if (savedNote) textarea.value = savedNote;
textarea.addEventListener('input', () => localStorage.setItem(storageKey, textarea.value));
});
`}
</script>

60
src/modele/mercredi.mdx Normal file
View File

@@ -0,0 +1,60 @@
---
title: "Daily Log - 21 Janvier 2026"
publishDate: 2026-01-21
tags: ["Daily", "Work", "Organisation"]
---
import Key from '~/components/bujo/Key.astro';
<div class="mb-8 p-4 bg-blue-50 border-l-4 border-blue-400">
<h2 class="text-xl font-bold text-slate-800 mb-2"><Key symbol="⚓" /> Ancrage & Bien-être</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Routine du matin (douche, dents...)</li>
<li><Key symbol="•" /> Activité physique douce (étirements, marche...)</li>
<li><Key symbol="" /> Qualité du sommeil (1-5) : __</li>
<li><Key symbol="" /> Humeur du jour (1-5) : __</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="*" /> Priorités du Jour (Pro & Perso)</h2>
<p class="text-sm text-slate-500 mb-3">Se concentrer sur 1 à 3 tâches essentielles pour avancer.</p>
<ul class="space-y-2">
<li><Key symbol="•" /> [Tâche pro n°1]</li>
<li><Key symbol="•" /> [Tâche pro n°2]</li>
<li><Key symbol="•" /> [Tâche perso importante]</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="$" /> Organisation & Budget</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Planifier le repas du soir</li>
<li><Key symbol="👁️" /> Point rapide sur les comptes</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="•" /> Foyer & Routine du soir</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Ranger l'espace de travail (5 min)</li>
<li><Key symbol="•" /> Préparer les affaires pour demain</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="♡" /> Loisirs & Note du jour</h2>
<p class="text-slate-600 mt-2">Un moment pour soi, une pensée, une petite victoire :</p>
<textarea id="daily-note-21" class="w-full mt-2 p-2 border rounded bg-slate-50" rows="2" placeholder="..."></textarea>
</div>
<script is:inline>
{`
document.addEventListener('DOMContentLoaded', () => {
const textarea = document.getElementById('daily-note-21');
const storageKey = 'note-/bujo/2026/01/21';
const savedNote = localStorage.getItem(storageKey);
if (savedNote) textarea.value = savedNote;
textarea.addEventListener('input', () => localStorage.setItem(storageKey, textarea.value));
});
`}
</script>

51
src/modele/samedi.mdx Normal file
View File

@@ -0,0 +1,51 @@
---
title: "Daily Log - 24 Janvier 2026"
publishDate: 2026-01-24
tags: ["Daily", "Weekend", "Organisation"]
---
import Key from '~/components/bujo/Key.astro';
<div class="mb-8 p-4 bg-blue-50 border-l-4 border-blue-400">
<h2 class="text-xl font-bold text-slate-800 mb-2"><Key symbol="⚓" /> Ancrage & Bien-être</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Routine du matin (douche, dents...)</li>
<li><Key symbol="•" /> Activité physique douce (étirements, marche...)</li>
<li><Key symbol="" /> Qualité du sommeil (1-5) : __</li>
<li><Key symbol="" /> Humeur du jour (1-5) : __</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="*" /> Objectifs du Samedi</h2>
<p class="text-sm text-slate-500 mb-3">Une ou deux choses pour profiter de la journée et se sentir bien.</p>
<ul class="space-y-2">
<li><Key symbol="•" /> [Objectif principal]</li>
<li><Key symbol="•" /> [Autre petite tâche]</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="•" /> Foyer & Organisation</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Session de rangement (15 min)</li>
<li><Key symbol="•" /> Tâche ménagère au choix (lessive, vaisselle...)</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="♡" /> Loisirs & Note du jour</h2>
<p class="text-slate-600 mt-2">Un moment pour soi, une pensée, une petite victoire :</p>
<textarea id="daily-note-24" class="w-full mt-2 p-2 border rounded bg-slate-50" rows="2" placeholder="..."></textarea>
</div>
<script is:inline>
{`
document.addEventListener('DOMContentLoaded', () => {
const textarea = document.getElementById('daily-note-24');
const storageKey = 'note-/bujo/2026/01/24';
const savedNote = localStorage.getItem(storageKey);
if (savedNote) textarea.value = savedNote;
textarea.addEventListener('input', () => localStorage.setItem(storageKey, textarea.value));
});
`}
</script>

60
src/modele/vendredi.mdx Normal file
View File

@@ -0,0 +1,60 @@
---
title: "Daily Log - 23 Janvier 2026"
publishDate: 2026-01-23
tags: ["Daily", "Work", "Organisation"]
---
import Key from '~/components/bujo/Key.astro';
<div class="mb-8 p-4 bg-blue-50 border-l-4 border-blue-400">
<h2 class="text-xl font-bold text-slate-800 mb-2"><Key symbol="⚓" /> Ancrage & Bien-être</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Routine du matin (douche, dents...)</li>
<li><Key symbol="•" /> Activité physique douce (étirements, marche...)</li>
<li><Key symbol="" /> Qualité du sommeil (1-5) : __</li>
<li><Key symbol="" /> Humeur du jour (1-5) : __</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="*" /> Priorités du Jour (Pro & Perso)</h2>
<p class="text-sm text-slate-500 mb-3">Se concentrer sur 1 à 3 tâches essentielles pour avancer.</p>
<ul class="space-y-2">
<li><Key symbol="•" /> [Tâche pro n°1]</li>
<li><Key symbol="•" /> [Tâche pro n°2]</li>
<li><Key symbol="•" /> [Tâche perso importante]</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="$" /> Organisation & Budget</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Planifier le repas du soir</li>
<li><Key symbol="👁️" /> Point rapide sur les comptes</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="•" /> Foyer & Routine du soir</h2>
<ul class="space-y-2">
<li><Key symbol="•" /> Ranger l'espace de travail (5 min)</li>
<li><Key symbol="•" /> Préparer les affaires pour demain</li>
</ul>
</div>
<div class="mb-6">
<h2 class="text-xl font-bold text-slate-700"><Key symbol="♡" /> Loisirs & Note du jour</h2>
<p class="text-slate-600 mt-2">Un moment pour soi, une pensée, une petite victoire :</p>
<textarea id="daily-note-23" class="w-full mt-2 p-2 border rounded bg-slate-50" rows="2" placeholder="..."></textarea>
</div>
<script is:inline>
{`
document.addEventListener('DOMContentLoaded', () => {
const textarea = document.getElementById('daily-note-23');
const storageKey = 'note-/bujo/2026/01/23';
const savedNote = localStorage.getItem(storageKey);
if (savedNote) textarea.value = savedNote;
textarea.addEventListener('input', () => localStorage.setItem(storageKey, textarea.value));
});
`}
</script>

View File

@@ -1,5 +1,5 @@
--- ---
import { getCollection, getEntry } from 'astro:content'; import { getCollection, render } from 'astro:content';
import LifeLayout from '../../layouts/LifeLayout.astro'; import LifeLayout from '../../layouts/LifeLayout.astro';
// Import des composants de page pour les garder modulaires // Import des composants de page pour les garder modulaires
@@ -15,10 +15,10 @@ import CollectionFilms from '../../components/bujo/CollectionFilms.astro';
export async function getStaticPaths() { export async function getStaticPaths() {
const bujoEntries = await getCollection('bujo'); const bujoEntries = await getCollection('bujo');
const paths = bujoEntries.map(entry => ({ const paths = bujoEntries.map(entry => {
params: { slug: entry.slug } const slug = entry.id.replace(/\.(md|mdx)$/, '');
})); return { params: { slug } };
});
// Ajouter les routes statiques/virtuelles // Ajouter les routes statiques/virtuelles
paths.push({ params: { slug: undefined } }); // Index paths.push({ params: { slug: undefined } }); // Index
paths.push({ params: { slug: 'keys' } }); paths.push({ params: { slug: 'keys' } });
@@ -31,13 +31,11 @@ export async function getStaticPaths() {
paths.push({ params: { slug: 'collections/brain-dump' } }); paths.push({ params: { slug: 'collections/brain-dump' } });
paths.push({ params: { slug: 'collections/bucket-list' } }); paths.push({ params: { slug: 'collections/bucket-list' } });
paths.push({ params: { slug: 'collections/films-a-voir' } }); paths.push({ params: { slug: 'collections/films-a-voir' } });
paths.push({ params: { slug: 'collections/idees-projets' } });
paths.push({ params: { slug: 'collections/idees-de-projets' } });
// Ajouter les routes pour les mois // Ajouter les routes pour les mois
const uniqueMonths = new Set<string>(); const uniqueMonths = new Set<string>();
bujoEntries.forEach(log => { bujoEntries.forEach(log => {
const [year, month] = log.slug.split('/'); const [year, month] = log.id.split('/');
if (year && month && !isNaN(parseInt(year)) && !isNaN(parseInt(month))) { if (year && month && !isNaN(parseInt(year)) && !isNaN(parseInt(month))) {
uniqueMonths.add(`${year}/${month}`); uniqueMonths.add(`${year}/${month}`);
} }
@@ -56,7 +54,7 @@ if (slug === undefined) {
const allLogs = await getCollection('bujo'); const allLogs = await getCollection('bujo');
const uniqueMonths = new Set<string>(); const uniqueMonths = new Set<string>();
allLogs.forEach(log => { allLogs.forEach(log => {
const [year, month] = log.slug.split('/'); const [year, month] = log.id.split('/');
if (year && month && !isNaN(parseInt(year)) && !isNaN(parseInt(month))) { if (year && month && !isNaN(parseInt(year)) && !isNaN(parseInt(month))) {
uniqueMonths.add(`${year}/${month}`); uniqueMonths.add(`${year}/${month}`);
} }
@@ -90,7 +88,7 @@ else if (slug.startsWith('collections/')) {
// 4. Gérer les logs mensuels (ex: /bujo/2026/01) // 4. Gérer les logs mensuels (ex: /bujo/2026/01)
else if (slug.match(/^\d{4}\/\d{2}$/)) { else if (slug.match(/^\d{4}\/\d{2}$/)) {
const [year, month] = slug.split('/'); const [year, month] = slug.split('/');
const monthlyLogs = await getCollection('bujo', ({ slug: logSlug }) => logSlug.startsWith(slug)); const monthlyLogs = await getCollection('bujo', ({ id }) => id.startsWith(slug));
Astro.props.page = 'monthly-log'; Astro.props.page = 'monthly-log';
Astro.props.logs = monthlyLogs; Astro.props.logs = monthlyLogs;
Astro.props.year = year; Astro.props.year = year;
@@ -98,9 +96,10 @@ else if (slug.match(/^\d{4}\/\d{2}$/)) {
} }
// 5. Gérer les entrées de contenu (Daily Logs) // 5. Gérer les entrées de contenu (Daily Logs)
else { else {
const entry = await getEntry('bujo', slug); const bujoEntries = await getCollection('bujo');
const entry = bujoEntries.find(e => e.id.replace(/\.(md|mdx)$/, '') === slug);
if (entry) { if (entry) {
const { Content } = await entry.render(); const { Content } = await render(entry);
Astro.props.page = 'entry'; Astro.props.page = 'entry';
Astro.props.entry = entry; Astro.props.entry = entry;
Astro.props.Content = Content; Astro.props.Content = Content;

View File

@@ -1,45 +1,12 @@
--- ---
import GameLayout from '../layouts/GameLayout.astro';
import GoldButton from '../components/ui/GoldButton.astro';
--- ---
<html lang="fr">
<GameLayout title="Bienvenue sur JDRSweetJourney"> <head>
<h1>Bienvenue sur le projet JDR Sweet Journey !</h1> <meta charset="utf-8" />
<h2>L'Ambition</h2> <meta name="viewport" content="width=device-width" />
<p>L'objectif est de créer un clone entièrement web de l'application mobile <strong>AFK Journey</strong>. Ce projet sera une vitrine technologique utilisant :</p> <title>Astro</title>
<ul> </head>
<li>La modélisation 3D et l'animation (2D et 3D) réalisées avec <strong>Blender</strong>.</li> <body>
<li>La retranscription de ces éléments dans le navigateur grâce à <strong>Three.js</strong>.</li> astro
</ul> </body>
<ul class="card-grid"> </html>
<GoldButton
href="https://threejs-journey.com"
title="🎓 Formation : Three.js Journey"
body="Ce projet s'appuie sur les enseignements de Three.js Journey pour garantir une base technique solide."
/>
</ul>
<p>Si en plus, cette plateforme peut servir de point de repère pour nos aventures de jeu de rôle, c'est une pierre deux coups !</p>
<h2>Le Voyage</h2>
<p>Ce site est aussi un levier pour maîtriser les paradigmes technologiques de demain. Explorez le <strong>journal d'aventure</strong> pour suivre la quête, ou consultez les <strong>logs de construction</strong> pour voir les coulisses techniques.</p>
<ul class="card-grid">
<GoldButton
href="/atelier"
title="🏜️ Le Sanctuaire des Grains"
body="Découvrez les arts et les outils du pèlerin pour façonner le sable et les rêves."
/>
<GoldButton
href="/observatoire"
title="🎨 L'Observatoire"
body="Explorez les sources d'inspiration : artistes, développeurs, podcasts et jeux qui nourrissent ce projet."
/>
<GoldButton
href="/boussole"
title="⚖️ La Boussole Éthique"
body="Une réflexion sur les modèles économiques vertueux et ceux à éviter dans le monde du jeu vidéo."
/>
</ul>
<p>Quelle ambition, jeune batracien...</p>
</GameLayout>

0
src/pages/sweet.astro Normal file
View File