Skip to content

About

Codex visuel des dinosaures — Trias, Jurassique, Crétacé. 1500+ espèces, paleo-art, voyage temporel. Astro + Tailwind 4 + Cloudflare Pages.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Evatosorus — Codex Mésozoïque

Vibed with Claude Code Visuals by openart.ai Astro Cloudflare Pages

Un codex visuel des dinosaures, du Mésozoïque tout entier — Trias, Jurassique, Crétacé. 1500+ espèces, paléo-art domaine public, voyage temporel cinématique, carte des fossiles trouvés.

5ᵉ site personnel de Sylad, suite naturelle d'Eywa (codex de Pandora). Cadeau pour ma nièce Eva, 18 ans.

Vibe

Trois ères, trois climats, trois géographies. Une atmosphère ambre/sable/terre qui change toutes les 25 secondes sur la landing. Un codex filtrable de 1500 fiches. Une carte interactive du paléo-monde. Une page À propos qui assume la collab humain × Claude Code × openart.ai.

Stack

  • Astro 6 + React 19 (composants interactifs : filtres, carte)
  • Tailwind 4 (palette ambre fossile / jade fougère / rust terre rouge)
  • Leaflet + tuiles Esri World Dark Gray Base (carte paléo-monde)
  • Cinzel + Crimson Text (typographies lapidaires + lecture serif)
  • Build statique pur, déployé sur Cloudflare Pages

Sources de données

  • PBDB — Paleobiology Database, CC0 / CC-BY (taxonomie, occurrences fossiles, datations stratigraphiques)
  • Wikidata + Wikipedia — enrichissement auto des fiches (nom commun, classification, régime, description). Les blurbs sont reformulés en ton documentaire par llama 3.1 en local (aucun appel à un service tiers). 1400+ fiches enrichies, 0 ChatGPT — voir scripts/enrich-species.mjs.
  • Wikimedia Commons — paleo-art domaine public ou CC-BY-SA
  • ICS 2024 — International Chronostratigraphic Chart pour les bornes Ma
  • Esri World Dark Gray Base (données © OpenStreetMap contributors) — fond de carte

Architecture

evatosorus/
├── frontend/                      # site Astro
│   ├── src/
│   │   ├── pages/                 # routes : / · /codex · /periodes · /carte · /about · 404.astro (servie en 404 par Cloudflare Pages)
│   │   │   ├── index.astro        # landing cinématique 75s loop
│   │   │   ├── codex.astro        # grid filtrable
│   │   │   ├── periodes/[id].astro
│   │   │   └── especes/[id].astro
│   │   ├── components/
│   │   │   ├── EvatoLogo.astro
│   │   │   ├── SpeciesCard.astro
│   │   │   ├── CodexFilters.tsx   # client:load (filtres réactifs)
│   │   │   ├── PaleoMap.tsx       # client:only react (Leaflet)
│   │   │   └── cinema/            # CycleBackdrop + DustField
│   │   ├── data/
│   │   │   ├── periods.ts         # 3 ères statiques
│   │   │   ├── species.types.ts   # schéma Zod-ready
│   │   │   ├── species.seed.ts    # 24 stars curées à la main
│   │   │   ├── species.ts         # merge seed + import
│   │   │   └── generated/         # output PBDB (gitignored)
│   │   ├── layouts/               # BaseLayout + CodexLayout (sidebar)
│   │   └── styles/global.css      # @theme tokens + amber-word hover
│   ├── astro.config.mjs
│   └── package.json
├── scripts/
│   └── import-paleobiodb.mjs      # enrichit avec ~1500 espèces PBDB
├── docs/                          # essais éditoriaux ; qa/expectations.md = attendus lus par la QA (mesures rejouées par scripts/qa-expectations.test.mjs, codex-pagination.e2e.test.mjs et codex-img.e2e.test.mjs)
├── README.md
├── HOW-IT-WORKS.md
├── DEPLOY.md
└── LICENSE                        # MIT

Dev local

cd frontend
nvm use         # Node 22
npm install
npm run dev     # http://localhost:4321

Enrichir les données depuis PaleoBioDB

cd frontend
npm run import:paleobiodb              # 1500 espèces (default)
# ou
node ../scripts/import-paleobiodb.mjs --limit 3000

Le script écrit frontend/src/data/generated/species.generated.json qui est mergé au runtime avec le seed manuel. Si le fichier n'existe pas, le site fonctionne avec les 24 espèces stars du seed — c'est volontaire.

Enrichir les fiches vides (Wikidata + Wikipedia + Ollama local)

Remplit nom commun, classification, régime (heuristique clade), blurb documentaire et image Wikimedia (téléchargée + créditée) pour les fiches PaleoBioDB sans contenu :

cd frontend
npm run enrich:species                 # toutes les fiches non-seed (batch resumable)
node ../scripts/enrich-species.mjs --limit 10            # échantillon
node ../scripts/enrich-species.mjs --ids abelisaurus-comahuensis
  • Offline : tourne en local, écrit le JSON + public/species/*.jpg committés. Le build Cloudflare ne fait aucun appel réseau.
  • Resumable : cache par espèce dans scripts/.cache/enrich/ (gitignored). Relancer reprend où ça s'est arrêté.
  • Préservant : ne remplit que les champs vides/placeholder, ne touche jamais le seed curé.
  • Prérequis : Ollama avec llama3.1:8b (override OLLAMA_BASE_URL / OLLAMA_MODEL). Run de réf. : 1422/1479 enrichies, 976 images, 0 erreur.

Propositions Ollama

Pour demander une proposition de blurb sans écraser species.seed.ts :

cd frontend
OLLAMA_BASE_URL=http://localhost:11434 npm run ollama:species -- --species=tyrannosaurus-rex

Le JSON généré va dans ../tmp/ et doit être relu/mergé manuellement.

Build & déploiement

cd frontend
npm run build   # → dist/

Connecte le repo à Cloudflare Pages, build command cd frontend && npm install && npm run build, output directory frontend/dist. C'est tout.

Crédits

Vibé à trois :

  • Sylvain (humain) — direction artistique, choix éditoriaux, code review
  • Claude Code (Anthropic, Opus 4.7 1M context) — code Astro/React/CSS, blurbs vulgarisés des fiches espèce
  • openart.ai — image hero du T-Rex et les trois vidéos d'animation (landing / films / about)

Toutes les fiches espèce sont CC-BY (texte) ; les images viennent de Wikimedia Commons avec leur licence d'origine, créditée sur chaque fiche. L'image hero et les animations vidéo sont des générations openart.ai à partir de prompts curés.

Licence

MIT — le code, pas les images. Voir LICENSE.

About

Codex visuel des dinosaures — Trias, Jurassique, Crétacé. 1500+ espèces, paleo-art, voyage temporel. Astro + Tailwind 4 + Cloudflare Pages.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages