Teknisk transparens
Apen kildekode
All Coveys kildekode er apent tilgjengelig pa Codeberg. Hvem som helst kan granske, bidra til og bygge videre pa koden.
Arkitekturoversikt
Covey bestar av fire tjenester som samarbeider via Docker Compose:
| Tjeneste | Rolle |
|---|---|
| Frontend | Webgrensesnitt bygget med Preact, servert via nginx |
| Backend | API og sanntidskommunikasjon med Express og Socket.io |
| Database | PostgreSQL 16 for datalagring |
| Traefik | Omvendt proxy med automatisk TLS-sertifikathandtering |
Designprinsipper
Preact i stedet for React
Vi bruker Preact (3 KB) i stedet for React (40 KB) slik at appen laster raskt selv pa eldre enheter og trege forbindelser. API-et er nesten identisk.
Progressive Web App (PWA)
Covey distribueres som en PWA -- ingen appbutikk trengs. Installer direkte fra nettleseren, fungerer offline for grunnfunksjoner, og mottar pushvarsler som en vanlig app.
Enkel funksjonsbryter
Funksjoner aktiveres via miljovariabler, ikke komplekse systemer. Enkelt, palitelig og uten eksterne avhengigheter.
Polling forst for kompatibilitet
Socket.io konfigureres til a starte med HTTP-polling og deretter oppgradere til WebSocket. Dette garanterer at eldre nettlesere kan koble til direkte.
Kartgjengivelse med OpenStreetMap
Vi bruker Leaflet med OpenStreetMap -- helt gratis, ingen API-nokkel kreves, og apen kildekode.
Inprosess-arbeidere
Bakgrunnsoppgaver (utlop av foresporsler, GDPR-sletting) kjores som planlagte prosesser i samme Node-prosess -- ingen ekstern jobbko trengs.
Dataflyt
- Statisk innhold: Nettleser -> Traefik -> nginx -> HTML/JS/CSS
- API-kall: Nettleser -> Traefik -> Express -> PostgreSQL
- Sanntid: Nettleser -> Traefik -> Socket.io (oppgraderer fra polling til WebSocket)
CI/CD
Koderepoet hostes pa Codeberg med Woodpecker CI for automatiserte tester og bygg. Hvert push kjorer backend- og frontendtester samt verifiserer at produksjonsbygget fungerer.
Sikkerhetsbeslutninger
- JWT med HS256 -- Tilstandslos autentisering med 24 timers utlopstid.
- Pseudonyme navn -- BankID-navn vises aldri automatisk.
- Omradenavn i stedet for koordinater -- Bare omradenavn vises, ikke eksakte GPS-koordinater.
- Haversine i stedet for PostGIS -- Enklere, lettere og tilstrekkelig for byskala.
- Minnebasert hastighetsbegrensning -- Ingen Redis trengs for en enkelt serverdistribusjon.
Hosting
Covey hostes pa en VPS hos GleSYS i Stockholm, drevet av fornybar energi. TLS-sertifikater handteres automatisk via Let's Encrypt.