Data sources and the choices behind them
Nothing the tool draws is invented. Each value comes from a named source, read at a stated moment, and where no record exists the interface says so instead of filling the gap.
The principles#
- A source is read only when it is needed. Catalogues are built once into the repository; services are called only for a recording that needs them (a place, a date in their span, a button pressed), and never for a date before their record begins.
- What may disappear is hosted here. Data that a third party could take down or that cannot be read from a browser (orbital elements, 3D models) is copied, reduced, and served from ufoathome.org with its credit, so any page embedding a scene gets it.
- Measured beats modelled, and modelled beats assumed. A brightness is a published observation where one exists; a formula fills in only what nobody measured, and an object with neither is computed but not drawn.
- Every service is swappable. Weather, elevation, imagery, place, time zone, models and drafting go through one registry: the source is a visible choice, with its credit next to it, and a second one can be added without touching the rest.
- The limits are stated. Each source below says where it stops: before 1940 for the weather, before 1957 for satellites, before February 2021 for individual passes.
The sky · Satellites · Weather · The ground · Place and time · Decor, pictures and sound · Drafting and assessment
The sky
| Source | What it provides | When it is read | Hosting and credit | Choices and limits |
|---|---|---|---|---|
| astronomy-engine | Positions and magnitudes of the Sun, Moon and planets; the Moon's phase; sky coordinates. | In the page, for every recording with a date. | Bundled library, MIT. | A full ephemeris rather than approximate formulas: the reason to reconstruct a sky is to be right about it. Its precession also carries the year-2000 catalogues (stars, the Galaxy, meteor radiants, novae) to the date observed. |
| HYG Database | Star positions, magnitudes and colours; names of stars down to magnitude 3. | Built once (build:stars). The page loads stars to magnitude 7.5, and to 9 only for an instrument that reaches that deep. | Served with the scene bundle. CC BY-SA. | Cut at 9 because the catalogue itself thins out beyond: star counts stop growing as they should. |
| JPL Horizons | The orbit of each naked-eye comet since 1910, as it was at that apparition's perihelion. | Built once (build:comets); the page propagates the orbit itself, no request. | Generated into the code. NASA/JPL. | Brightness is NOT taken from JPL: its magnitude parameters put NEOWISE 4 magnitudes too faint. Peak magnitudes observed at the time are entered by hand, with their dates. A tail is drawn only where its length was recorded. |
| AAVSO, via Strope, Schaefer & Henden 2010 | The measured light curve of every nova since 1891 that reached magnitude 5, binned from the AAVSO's observations. | Built once (build:novae) with the supernovae below; the page interpolates the curve, no request. | Generated into the code. VizieR catalogue J/AJ/140/34. | A recorded curve rather than a decline formula: the standard laws miss most real novae, and would draw DQ Herculis bright for a year through the weeks dust had dimmed it ten magnitudes. Nothing is drawn before the first observation or after the last. RS Oph 2021 and T CrB 1866 reuse the curve of their own previous eruption, shifted onto their recorded peak. |
| Historical supernovae | The supernovae of 1006, 1054, 1181, 1572, 1604 and 1987A: where they stood, and how bright on each night. | Built once (build:novae). | Generated into the code. Positions from SIMBAD; 1572 and 1604 reduced by Ruiz-Lapuente (2004, 2017) from Tycho's, Kepler's and the Korean astronomers' own estimates; 1006, 1054 and 1181 from the chronicles (Stephenson & Green); 1987A from the Open Supernova Catalog. | Each curve says which kind it is, because they differ by two orders of magnitude in quality: 1054 and 1181 are a peak and the day they were last seen, and the decline of 1006 is borrowed from 1572, the same kind of explosion. Dates in the Julian calendar are read as such. V1369 Cen (2013) is left out: nothing published follows it past its peak. |
| IMO meteor shower list | Radiant, activity window, peak hourly rate and speed of the annual showers; a sporadic background. | Table in the code, computed for any date. | In the code. International Meteor Organization. | The hourly rate is a multi-year average, not a forecast for one night: outbursts and storms are not in it. |
| Milky Way, zodiacal light, sky brightness | The glow of the Galaxy and of the zodiacal dust, and the brightness of the sky by twilight and moonlight. | Computed in the page, no data fetched. | Models from the literature: Leinert et al. 1998 and Hong 1985 (zodiacal light), Patat et al. 2006 and Krisciunas & Schaefer 1991 (sky brightness). | No photograph of the Milky Way: a model Galaxy integrated along the line of sight, checked against three measurements rather than fitted to one. |
Satellites
Two levels. For every date since Sputnik, what the Earth's shadow allowed and how many objects were in orbit. From February 2021, which satellites really crossed the sky, where, and how bright.
| Source | What it provides | When it is read | Hosting and credit | Choices and limits |
|---|---|---|---|---|
| CelesTrak SATCAT | Launch and re-entry date of every tracked object: the number in orbit each month, and when each class existed (Echo, Iridium flares, ISS, Starlink). | Built once (build:satellites); also gives launch dates to the orbital element archive. | Generated into the code. CC BY 4.0. | Only the two date columns are read. Its orbit columns describe each object's LAST state: Echo 1 appears at 400 km when it flew near 1,500. Debris is not counted. |
| Orbital element archive, Laurent Chabin (SCEAU) | The public element sets saved once or twice a day since 22 February 2021: the naked-eye list, every Starlink, and to January 2025 the full catalogue. | Reduced once (build:tle). The page fetches only the two weeks around the observation, and only for a date the archive covers; the propagator itself is loaded only then. | Served from ufoathome.org/tle/, credited in the player's credits. | Hosted here because the original server cannot be read from a browser. 2.8 GB of snapshots are kept as 113 MB: every day for naked-eye objects and for Starlinks in their first 60 days (the trains), one set a week otherwise. Debris and objects nobody measured are dropped. A set is never used more than 7 days from its epoch, so a hole in the archive (three months in late 2025) is reported as a hole rather than filled with a stale orbit. |
| satellite.js (SGP4) | The standard propagator for these element sets, and the Sun's position; the Earth's umbra and penumbra are computed on top. | Loaded on demand, for covered dates only. | Bundled library, MIT. | Held on the release before the one that ships a WebAssembly build that breaks the bundle, for no gain here. |
| Satellite brightness: McCants, Stellarium, Mallama et al. | How bright each object looks: standard magnitudes (McCants, completed by Stellarium's list for recent objects), and published means for the constellations nobody catalogued (Starlink, OneWeb, BlueBird). | Merged into the archive at build time; applied in the page. | Starlink 5.93 then 7.21 (arXiv:2006.08422, 2101.00374), 4.58 below 357 km while raising orbit (2405.12007); OneWeb 7.18 (2012.05100); BlueBird 3.77 then 4.32 (2608.23668). | Without the orbit-raising value no Starlink train would ever be drawn. An unmeasured rocket stage takes the median of at least three identical measured stages; any other unmeasured object is computed but not drawn. Glints and flares are not modelled: they can only make a satellite brighter. |
Weather
| Source | What it provides | When it is read | Hosting and credit | Choices and limits |
|---|---|---|---|---|
| ERA5 (Copernicus/ECMWF) via Open-Meteo | Hourly cloud cover by level, precipitation, snow, weather code, wind, temperature and dew point, at the place and hour of the observation. | Fetched by the editor once a date and a place are known, from 1940 only. | Open-Meteo archive API, keyless. © Copernicus/ECMWF. | A reanalysis on a ~28 km grid, not a station: a local shower can be missing. Cloud bases are derived (temperature and dew point for the low deck), not measured. Every field can be unlocked and replaced by the testimony. No vertical profile is available in archive mode, which is what radar propagation anomalies would need. |
The ground
| Source | What it provides | When it is read | Hosting and credit | Choices and limits |
|---|---|---|---|---|
| AWS Terrain Tiles (SRTM, ETOPO1) | Relief around the witness. | Fetched when a scene has a real place. | Amazon S3, keyless. © AWS Open Data. | No key and no rate limit, which an embeddable component needs. The relief model is too coarse for trees and buildings: a picture of the place lined up in the scene is the way to state those. |
| Esri World Imagery | Aerial imagery draped on the relief, and the witness map. | Fetched with the relief, and when the map is opened. | Esri tiles, keyless. © Esri, Maxar, Earthstar Geographics. | Today's photograph of the ground, whatever the year of the account; the scene darkens it to the hour. EOX Sentinel-2 cloudless can be picked instead. |
Place and time
| Source | What it provides | When it is read | Hosting and credit | Choices and limits |
|---|---|---|---|---|
| Nominatim (OpenStreetMap) | Searching a place by name, and naming a point. | Only when the author presses Enter or the search button, never at each keystroke. | © OpenStreetMap contributors. | It knows hamlets, farms, roads and airfields, where accounts happen; its usage policy is why nothing is sent while typing. |
| Open-Meteo time zones and the IANA database | The time zone of a place, then its legal offset on the date of the account. | Once a place is known; the historical offset comes from the browser. | © Open-Meteo; tz database in the browser. | Today's offset is never used for an old date: France was at UTC+1 all year in 1965. |
Decor, pictures and sound
| Source | What it provides | When it is read | Hosting and credit | Choices and limits |
|---|---|---|---|---|
| 3D models (Kenney, Poly by Google) | Cars, houses, trees, street lights, an airliner. | When a decor object names a model. | Re-hosted on ufoathome.org, each with its licence file (CC0, CC BY 3.0). | Hosted here because free kits sit on mirrors of uncertain permanence. A model whose credit is unknown is not drawn; Google Earth models were refused for their licence. |
| Panoramax | Street-level photographs and panoramas near the place, each with its position and direction. | Only when the author searches for pictures in the editor. | Panoramax API, credited with each picture's author and licence. | Open and readable from any page. Google Street View was refused: its terms keep the pictures inside Google's viewers. |
| Weather sounds (OpenGameArt) | Rain, wind and thunder. | Loaded when the weather of the scene needs them. | Bundled. Rain and wind CC0; thunder by Jerimee, CC BY 3.0, credited in the player. | The phenomenon's own sound is synthesized from its description, not taken from a recording. |
Drafting and assessment
| Source | What it provides | When it is read | Hosting and credit | Choices and limits |
|---|---|---|---|---|
| Claude (Anthropic) | A first draft of a recording from a written account, each value marked as stated, derived or assumed. | Only when the author opens the panel and gives their own API key. | Called from the browser with the author's key; nothing passes through ufoathome.org. | No server of ours, so no account and no key held here. The draft is a proposal the author edits, never a result. |
| Hynek classification | The close-encounter category a recording supports, beside the tool's own coverage questions. | Computed in the page. | After J. Allen Hynek. | Categories the format cannot state (a physical trace, a radar return) are marked unsupported rather than guessed; tags are not taken as evidence. |
The detail of each choice, with the measurements that settled it, is in the README and in the code comments of each source.