Linus OlofssonandClaude Opus 5.5 aeb1c76428 Jordglob, spara plats och delade pins på stadsnivå
- Platsrutan: MapLibre GL 6.11 (självhostad, verifierad mot npm) med globprojektion,
  dag-/nattskugga i realtid med mjuk skymning, Natural Earth-konturer, röd nål,
  scroll- och knappzoom
- "Spara som min plats" (bara i webbläsaren) i stället för automatisk sparning
- "Dela min pin": öppet anonymt index i Cloudflare D1. Servern avrundar till 0,1°,
  slår själv upp stad/land (ingen fritext), en pin per ägare, borttagbar,
  spärr via saltad IP-hash som går ut
- vendor/ markerad som -text i .gitattributes (filerna hålls byte-exakta)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 00:23:33 +02:00

PublicCloud – himlen över Örebro

Källkoden till https://publiccloud.se: en helskärmshimmel som följer solen, månen och det aktuella vädret, med en klocka i mitten och fyra glasrutor runt den.

Vad sidan gör

Himlen

  • Dag och natt följer klockan. Dagfilmen spelas från verklig soluppgång till solnedgång och nattfilmen från solnedgång till soluppgång, en bildruta åt gången, med mjuk övertoning mellan rutorna.
  • Vädret läggs ovanpå (Open-Meteo, var 10:e minut): klart (molnen tonas bort), växlande (solen genom molnen), mulet, dimma, duggregn, regn och kraftigt regn med droppar som rinner på "glaset", åska med blixtar och snö.
  • Vind (hastighet, byar, riktning): snett regn, blåsande snö och droppar, vindstråk, höstlöv (sep–nov) och byar. Vyn är vänd mot söder, så västlig vind blåser åt vänster.

Natten

  • Månen med rätt fas och position. Vid växlande molnighet skärs den av molnen i filmen, eftersom molnen ligger i lagret ovanför månen.
  • Stjärnor som glittrar realistiskt (scintillation, utan strålkors).
  • Mulet ger ett mörkt molntäcke.
  • Norrsken styrs av NOAA:s Kp-index: gröna band med ljus underkant som kommer lågt från horisonten och sveper upp över himlen.
  • Nymåne-överraskning: en egen SVG-siluett av en fotograf som sitter på en månskära med kameran (img/moon-photographer.svg). Den visas bara vid nymåne, när det är mörkt och klart.

Fyra rutor

  • Just nu: väder, temperatur, vind, måne, sol och plats.
  • Plats: en jordglob (MapLibre GL 6.11, globprojektion) med dag- och nattskugga i realtid, kust- och landsgränser (Natural Earth), en röd nål för vald plats, scroll- och knappzoom, "Utgå från min plats" (GPS), klick på globen och standardplatsen Örebro slott. Allt räknas om för vald plats.
    • Spara som min plats: sidan startar där nästa gång (sparas bara i webbläsaren).
    • Dela min pin: ett öppet, anonymt index på stadsnivå. Servern avrundar positionen till 0,1°, slår själv upp stad och land (ingen fritext) och visar alla delade städer som glödande punkter på globen. Ägaren kan ta bort sin pin. Spärr: en delning per nätverk och 5 min (saltad IP-hash som går ut, IP sparas aldrig).
  • Kväll & natt: betyg för stjärnhimlen, chans till norrsken (Kp nu och prognos), meteorregn samt fullmåne och nymåne.
  • Fotoljus: gyllene och blå timmen med väderprognos, månens upp- och nedgång, dimma, regnbåge och nattlysande moln.

Textstorleken anpassas automatiskt så att allt får plats. På mobil staplas rutorna.

Molnlager och ikoner (standard, ?lager=0 stänger av): tre procedurella molnlager som driver med vinden på olika djup (månen och solen ligger mellan lagren), samt animerade SVG-väderikoner i rutorna.

Struktur

site/
  public/index.html              hela sidan (HTML, CSS, JS – inga byggsteg)
  public/img/moon-photographer.svg  nymåne-överraskningen
  public/_headers                cache-regler (filmerna cachas i ett år → nytt filnamn vid ny film)
  public/video/                  day-v2 / night som WebM (VP9) + MP4 (H.264, reserv för äldre Safari)
  public/vendor/maplibre-6.11.2/ MapLibre GL JS (självhostad, verifierad mot npm-registrets integritet, BSD-3)
  public/vendor/ne/              Natural Earth 1:110m kust- och landsgränser (public domain)
  worker.js                      Cloudflare Worker: statiska filer + HTTP Range (206) för /video/* + /api/pins (GET/POST/DELETE)
  wrangler.jsonc                 Worker-konfiguration (namn publiccloud-sky, D1-databasen publiccloud-pins)
  db/schema.sql                  tabellerna pins, ratelimit och geocache
tools/
  upscale-slowmo.sh              hur filmerna togs fram: Real-ESRGAN x4plus (uppskalning) + RIFE v4.6 (slowmotion)

Driftsättning

Sajten körs som en Cloudflare Worker med statiska filer och custom domain publiccloud.se.

cd site
export CLOUDFLARE_API_TOKEN=...   # konto-token med Workers-rättighet
export CLOUDFLARE_ACCOUNT_ID=...
npx wrangler d1 execute publiccloud-pins --remote --file db/schema.sql   # första gången
npx wrangler secret put PIN_SALT                                        # slumpat salt för IP-spärren
npx wrangler deploy

Testparametrar

Parameter Exempel Effekt
t ?t=2026-10-10T23:30%2B02:00 startar klockan vid en viss tid
speed ?speed=600 kör klockan snabbare
weather ?weather=thunder tvingar väder: clear, partly, overcast, fog, drizzle, rain, heavyrain, thunder, snow
wind, winddir ?wind=75&winddir=270 tvingar vind (km/h, grader)
kp ?kp=7 tvingar Kp-index (norrsken)
nymane ?nymane=1 visar nymåne-överraskningen oavsett månfas (på natten)
lager ?lager=0 stänger av molnlager + animerade ikoner (på som standard)
instant ?instant=1 inga övertoningar (för skärmdumpar)
debug ?debug=1 visar bildruta, sol, väder, vind, måne, norrsken

Datakällor

  • Väder och prognos per timme: Open-Meteo (gratis för icke-kommersiellt bruk)
  • Kp-index nu och 3-dygnsprognos: NOAA SWPC
  • Karta: OpenStreetMap via Leaflet 1.9.4 (cdnjs, SRI)
  • Platsnamn: OpenStreetMap Nominatim (i webbläsaren för vald plats, i Workern för delade pins)
  • Konturer: Natural Earth (public domain)
  • Sol- och månberäkningar: formler från SunCalc (Vladimir Agafonkin), inbäddade i sidan
  • Meteorregn: American Meteor Society / IMO:s kalendrar
S
Description
No description provided
Readme
14 MiB
Languages
HTML 91.9%
JavaScript 6.8%
Shell 1.3%