Nettoyage VSCode et préparation de l'atelier

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

View File

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

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

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

View File

@@ -1,45 +1,12 @@
---
import GameLayout from '../layouts/GameLayout.astro';
import GoldButton from '../components/ui/GoldButton.astro';
---
<GameLayout title="Bienvenue sur JDRSweetJourney">
<h1>Bienvenue sur le projet JDR Sweet Journey !</h1>
<h2>L'Ambition</h2>
<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>
<ul>
<li>La modélisation 3D et l'animation (2D et 3D) réalisées avec <strong>Blender</strong>.</li>
<li>La retranscription de ces éléments dans le navigateur grâce à <strong>Three.js</strong>.</li>
</ul>
<ul class="card-grid">
<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>
<html lang="fr">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Astro</title>
</head>
<body>
astro
</body>
</html>

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