--- import Base from '../layouts/Base.astro'; import pkg from '../../package.json'; export const prerender = false; const deps = Object.entries(pkg.dependencies as Record).sort(([a], [b]) => a.localeCompare(b), ); const devDeps = Object.entries(pkg.devDependencies as Record).sort(([a], [b]) => a.localeCompare(b), ); // Catalogue manuel : description + license + URL pour chaque dépendance principale. const META: Record = { astro: { desc: "Framework web orienté contenu (rendu serveur, île d'interactivité).", license: 'MIT', url: 'https://astro.build/', }, '@astrojs/node': { desc: 'Adapter Astro pour exécution sur Node.js (mode standalone).', license: 'MIT', url: 'https://docs.astro.build/en/guides/integrations-guide/node/', }, '@astrojs/tailwind': { desc: 'Intégration TailwindCSS pour Astro.', license: 'MIT', url: 'https://docs.astro.build/en/guides/integrations-guide/tailwind/', }, tailwindcss: { desc: 'Framework CSS utility-first.', license: 'MIT', url: 'https://tailwindcss.com/', }, ioredis: { desc: 'Client Redis/Valkey performant pour Node.js (cache du snapshot Vigilance).', license: 'MIT', url: 'https://github.com/redis/ioredis', }, '@astrojs/check': { desc: 'Type checker officiel Astro (utilisé en CI / dev).', license: 'MIT', url: 'https://docs.astro.build/en/reference/cli-reference/#astro-check', }, '@types/node': { desc: 'Types TypeScript pour les API Node.js.', license: 'MIT', url: 'https://www.npmjs.com/package/@types/node', }, typescript: { desc: 'Compilateur TypeScript (vérification de types).', license: 'Apache-2.0', url: 'https://www.typescriptlang.org/', }, }; const DATA_SOURCES = [ { name: 'France GeoJSON', desc: "Polygones des départements français (utilisés pour la carte SVG).", license: 'Licence Ouverte 2.0', url: 'https://github.com/gregoiredavid/france-geojson', }, { name: 'Météo France — Vigilance', desc: 'Bulletin Vigilance en temps réel via Opendatasoft.', license: 'Licence Ouverte 2.0', url: 'https://public.opendatasoft.com/explore/dataset/weatherref-france-vigilance-meteo-departement/', }, { name: 'Météo France — Climatologie', desc: 'Données climatologiques de base quotidiennes (températures, précipitations).', license: 'Licence Ouverte 2.0', url: 'https://www.data.gouv.fr/datasets/donnees-climatologiques-de-base-quotidiennes', }, ]; const INFRA = [ { name: 'Node.js 22', desc: "Runtime serveur.", license: 'MIT', url: 'https://nodejs.org/' }, { name: 'Docker', desc: 'Containerisation.', license: 'Apache-2.0', url: 'https://www.docker.com/' }, { name: 'Caddy', desc: 'Reverse proxy + TLS automatique.', license: 'Apache-2.0', url: 'https://caddyserver.com/' }, { name: 'Valkey', desc: 'Fork ouvert de Redis (cache).', license: 'BSD-3-Clause', url: 'https://valkey.io/' }, { name: 'Umami', desc: 'Analytics RGPD-friendly (auto-hébergé).', license: 'MIT', url: 'https://umami.is/' }, { name: 'Forgejo', desc: 'Forge git auto-hébergée + CI/CD.', license: 'MIT', url: 'https://forgejo.org/' }, ]; ---

Dépendances

Transparence sur ce qui fait tourner Info Canicule : code, données, infrastructure. Tout est open source ou en données ouvertes.

Sources de données

{DATA_SOURCES.map((s) => ( ))}
Source Description Licence
{s.name} {s.desc} {s.license}

Bibliothèques applicatives

{deps.map(([name, version]) => { const m = META[name]; return ( ); })}
Package Version Description Licence
{m ? {name} : name} {version} {m?.desc ?? '—'} {m?.license ?? '—'}

Outillage de développement

{devDeps.map(([name, version]) => { const m = META[name]; return ( ); })}
Package Version Licence
{m ? {name} : name} {version} {m?.license ?? '—'}

Infrastructure

{INFRA.map((i) => ( ))}
Composant Description Licence
{i.name} {i.desc} {i.license}

Code source du site disponible sur demande à florian@nocleus.com.