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>
This commit is contained in:
Linus Olofsson
2026-09-25 00:23:33 +02:00
co-authored by Claude Opus 5.5
parent 074d96566e
commit aeb1c76428
14 changed files with 1223 additions and 38 deletions
+12 -4
View File
@@ -18,7 +18,9 @@ Källkoden till **https://publiccloud.se**: en helskärmshimmel som följer sole
**Fyra rutor**
- **Just nu:** väder, temperatur, vind, måne, sol och plats.
- **Plats:** karta med zoom (+/−), knappen "Utgå från min plats" (GPS), klick i kartan för att välja plats, och standardplatsen Örebro slott. Allt räknas om för vald 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.
@@ -34,8 +36,11 @@ site/
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)
worker.js Cloudflare Worker: statiska filer + HTTP Range (206) för /video/* (krävs av Safari/iOS)
wrangler.jsonc Worker-konfiguration (namn publiccloud-sky)
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)
```
@@ -48,6 +53,8 @@ Sajten körs som en Cloudflare Worker med statiska filer och custom domain `publ
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
```
@@ -70,6 +77,7 @@ npx wrangler deploy
- Väder och prognos per timme: [Open-Meteo](https://open-meteo.com/) (gratis för icke-kommersiellt bruk)
- Kp-index nu och 3-dygnsprognos: [NOAA SWPC](https://www.swpc.noaa.gov/)
- Karta: [OpenStreetMap](https://www.openstreetmap.org/copyright) via [Leaflet](https://leafletjs.com/) 1.9.4 (cdnjs, SRI)
- Platsnamn: OpenStreetMap Nominatim
- Platsnamn: OpenStreetMap Nominatim (i webbläsaren för vald plats, i Workern för delade pins)
- Konturer: [Natural Earth](https://www.naturalearthdata.com) (public domain)
- Sol- och månberäkningar: formler från SunCalc (Vladimir Agafonkin), inbäddade i sidan
- Meteorregn: American Meteor Society / IMO:s kalendrar