aeb1c764284975d6f1ec44f38a5d948f5fbf49a7
- 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>
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
Languages
HTML
91.9%
JavaScript
6.8%
Shell
1.3%