Journal

astralmanach : sortir une bibliothèque d'un projet bénévole pour qu'il dure

En 2026, je travaille bénévolement sur Un art voulu voyant, le projet de recherche-création de Florian Rosinski. Un de ses outils, Observations, compose une planche du ciel pour un...

Article7 fils étiquetés
Carte du ciel de Paris le 30 septembre 2026, dessinée à partir des données de la bibliothèque astralmanach

En 2026, je travaille bénévolement sur Un art voulu voyant, le projet de recherche-création de Florian Rosinski. Un de ses outils, Observations, compose une planche du ciel pour une date, une heure et un lieu. Pour la calculer, il a fallu un moteur.

Ce moteur s'appelle aujourd'hui astralmanach : une bibliothèque JavaScript publiée sur npm, une API publique et trois outils. Cette note dit pourquoi je l'ai sorti du projet, et ce que j'y ai appris.

La page d'accueil d'astralmanach.eu, qui présente la bibliothèque JavaScript

astralmanach.eu : la bibliothèque, son API et ses outils.

D'où ça vient : Observations

On y saisit une date, une heure et un lieu, comme pour un thème astral. Mais ce qui revient est un thème astronomique : du réel observé, assemblé en collage. La page de l'outil le dit ainsi : « Le thème astronomique mobilise l'histoire des photographies de l'espace pour situer votre naissance dans l'univers. »

C'est un renversement. Le thème astral emprunte les habits de la science : des degrés, des aspects, des vecteurs. Le thème astronomique fait l'inverse : il part de mesures réelles, et les présente comme un assemblage d'images.

La sortie est une planche A4, à imprimer. Elle se lit du bas vers le haut, du corps qui regarde vers le ciel :

  • en haut, l'image astronomique du jour, dont le bord bas est un horizon : un contour en pixels que les astres levés soulèvent, chacun à son azimut ;
  • sur cette image, la carte du ciel, dans un disque centré sur le zénith ;
  • au milieu, un observateur ;
  • en bas, une webcam d'observatoire.

La planche A4 générée par Observations pour Nancy, avec la carte du ciel, un observateur et les diagrammes de la Lune

Observations, sur uavv.fr : le ciel de Nancy, le 5 octobre 2026 à 22 h 15. La carte, la Lune et les planètes viennent de la bibliothèque. Les images de la NASA et de l'ESO sont créditées sur la planche.

Trois règles de ce projet me servent bien au-delà de lui.

Des réglages plutôt qu'un parti pris. C'est la demande de l'artiste : multiplier les options réglables plutôt que coder en dur un choix. Chaque valeur de la planche est donc un réglage, avec une graine pour le hasard.

Imprimable dès l'origine. Tout se décrit en millimètres, dans une seule table que lisent l'écran et l'impression. Le calculé est en vectoriel, les images en bitmap à 300 points par pouce au moins. Le piège à éviter : un site pensé pour l'écran, qui découvre trop tard qu'il ne produit pas de fichier imprimable.

Rien qui demande une autorisation. Domaine public ou licences ouvertes seulement. Ce qui exige un accord est mis en réserve, et écrit comme tel. Des images de réseaux de détection de météores ont ainsi été écartées : elles appartiennent à leurs opérateurs.

Pourquoi en faire une bibliothèque

Au départ, un seul dépôt contenait tout : le site du projet artistique, les outils, et le calcul du ciel au milieu. Pour un projet bénévole, ça posait trois problèmes.

  1. Le projet et les outils sont deux choses. Le site d'un artiste doit vivre dans son dépôt à lui, avec son histoire. Les outils, eux, avaient besoin de leur propre adresse.
  2. Des fichiers jumeaux. Plusieurs fichiers existaient en double, tenus à la main d'un site à l'autre.
  3. Un calcul enfermé. Personne d'autre ne pouvait s'en servir, ni le vérifier.

Le 30 septembre 2026, nous avons tranché : on sépare. Le site du projet est parti dans le dépôt de Florian. Les outils publics ont gardé le leur. Et le moteur du ciel dont Observations a besoin est devenu un paquet public sur npm, sous licence MIT.

Ce que ça change sur la durée :

  • Le site de l'artiste dépend d'un paquet versionné, pas de mon dossier de travail. Si je m'arrête, le paquet reste installable et le site continue de tourner.
  • Une bibliothèque a un contrat. Des types, des tests, un journal des changements, des numéros de version qui veulent dire quelque chose. La publication sur npm se fait par l'intégration continue, au moment où je pose une étiquette de version, avec attestation de provenance.
  • Les outils n'ont presque rien à entretenir. Pas de base de données, pas de compte, pas de partie privée : une clé de l'API de la NASA suffit.

Les versions 0.1.0 et 0.2.0 sont sorties le 30 septembre 2026, la 0.2.1 le lendemain. C'est un paquet ESM, typé, pour Node 20 et plus.

Ce que la bibliothèque fait

Il existe d'excellentes bibliothèques d'astronomie en JavaScript. astralmanach ne les remplace pas : elle s'appuie dessus. Les positions viennent d'astronomy-engine, les orbites de satellite.js, les étoiles et les figures des constellations des catalogues de d3-celestial.

Elle répond à la question que ces bibliothèques laissent ouverte : à quoi ressemblait le ciel, ici, à ce moment-là, en mots et en formes ?

import { skyRecap } from "astralmanach";

const r = skyRecap({
  date: "2026-09-30",
  time: "21:00",
  place: { name: "Paris", lat: 48.8566, lon: 2.3522, tz: "Europe/Paris" },
});

console.log(r.headline); // la Lune, le Soleil, ce qu'on voyait à l'œil nu

La carte du ciel n'est pas un dessin : ce sont des données. Les étoiles, les lignes des constellations et leurs noms sont projetés dans un disque. À chacun de les tracer en SVG, sur un canevas ou dans un PDF.

Une carte du ciel en noir sur blanc : étoiles, lignes des constellations et leurs noms dans un disque

Paris, 30 septembre 2026, 19 h UTC. Chaque point et chaque ligne vient de skyMap(). Le dessin tient en 60 lignes de SVG.

Quatre principes tiennent l'ensemble :

Principe Ce que ça veut dire
Ni secret, ni disque La bibliothèque ne lit aucun fichier ni aucune variable d'environnement. La clé, le User-Agent et le cache lui sont passés. Les clés sont masquées dans tout ce qu'elle renvoie.
Jamais d'exception Une source qui échoue donne un résultat avec un statut et un message. La page s'affiche toujours.
Calculer sur place Tout ce qui peut se calculer se calcule localement. Seuls la Station spatiale et les bolides passent par le réseau.
L'heure civile, juste Une date est locale au lieu, avec son fuseau et l'heure d'été. Sans heure, l'instant est midi.

L'API : un terrain de jeu

Le site sert une API en lecture seule sur le même moteur. Pas de compte, pas de clé, et elle s'appelle depuis n'importe quel site. Elle est décrite en OpenAPI 3.1 et livrée avec une collection Postman.

Sa page de documentation permet surtout de l'essayer : on choisit une source, une date, un lieu, et la requête part de la page. On voit l'adresse appelée, le statut, le temps de réponse, et les résultats.

Le formulaire d'essai de l'API : une requête vers JPL Horizons, la réponse 200 en 259 millisecondes et deux cartes

La page de l'API. Ici la Lune, par JPL Horizons : 200, 259 ms, deux cartes.

La même requête, hors du navigateur, et un extrait de sa réponse :

curl "https://astralmanach.eu/api/run?query=jpl.horizons&date=2026-09-30&time=21:00&lat=48.8566&lon=2.3522&place=Paris&ptz=Europe%2FParis"
{
  "queryId": "jpl.horizons",
  "note": "vu du centre de la Terre, 30 septembre 2026 à 21:00",
  "status": "ok",
  "cards": [
    {
      "kind": "event",
      "title": "🌖 Gibbeuse décroissante",
      "facts": [
        ["Éclairée", "80 %"],
        ["Constellation", "Taureau"],
        ["Distance", "369 691 km"]
      ]
    }
  ]
}

Chaque source répond dans la même forme : des cartes. Un titre, des faits, des liens, une heure. C'est ce qui permet d'en brancher 34 sans écrire 34 affichages.

La liste des sources de l'API, chacune avec son identifiant et son fournisseur

Le registre : 34 sources, de la NASA aux calculs faits sur place.

Brancher 34 sources apprend vite que chaque fournisseur a ses règles :

  • la clé de démonstration de la NASA est très limitée, une vraie clé s'obtient en une minute ;
  • Launch Library accepte quinze requêtes par heure sans compte ;
  • Wikimedia exige un User-Agent qui dit qui appelle ;
  • CelesTrak demande de mettre ses données en cache plutôt que de le solliciter sans cesse ;
  • les passages de la Station spatiale ne se calculent pas à plus de six jours des derniers éléments orbitaux : une orbite ancienne donnerait un résultat faux, donc la bibliothèque refuse.

Ces règles sont écrites dans la documentation, avec la liste des clés et des inscriptions à prévoir pour faire tourner la bibliothèque soi-même.

Trois outils, la même bibliothèque

Le site propose trois outils, qui sont trois usages du même paquet :

  • le Thème : ce que lisent l'astrologie et les traditions du monde ;
  • le Ciel : ce qu'on a observé ce jour-là, jamais d'astrologie ;
  • le Certificat : les mêmes sources, mises en phrases.

L'outil Le Ciel, interrogé pour Nancy le 5 octobre 2026, avec la liste des résultats par source

Le Ciel : 26 sources interrogées pour Nancy, le 5 octobre 2026 à 22 h 15.

Ce que j'en retiens

  • Sortir le moteur a dit qui possède quoi. L'artiste a son site et son dépôt. La bibliothèque est à tout le monde. Les outils sont un usage parmi d'autres.
  • Un projet bénévole dure si quelqu'un d'autre peut le faire tourner sans moi. D'où le paquet, la documentation, une API qu'on essaie sans s'inscrire, et des licences créditées une par une.
  • Les limites sont écrites. Les libellés sont en français seulement. Le paquet contient trois sources, le registre des 34 vit dans le site. Et c'est une version 0.2 : jeune.

Pour aller voir : le paquet sur npm, le dépôt, l'API, et Observations, où tout a commencé. L'autre versant du même projet, les mains, est raconté dans Trente mains, quarante vidéos.