Teknisk transparens
Aben kildekode
Al Coveys kildekode er abent tilgaengelig pa Codeberg. Hvem som helst kan gennemga, bidrage til og bygge videre pa koden.
Arkitekturoverblik
Covey bestar af fire tjenester, der samarbejder via Docker Compose:
| Tjeneste | Rolle |
|---|---|
| Frontend | Webgraenseflade bygget med Preact, serveret via nginx |
| Backend | API og realtidskommunikation med Express og Socket.io |
| Database | PostgreSQL 16 til datalagring |
| Traefik | Omvendt proxy med automatisk TLS-certifikathndtering |
Designprincipper
Preact i stedet for React
Vi bruger Preact (3 KB) i stedet for React (40 KB), sa appen indlaeses hurtigt selv pa aeldre enheder og langsomme forbindelser. API'et er naesten identisk.
Progressive Web App (PWA)
Covey distribueres som en PWA -- ingen app-butik nodvendig. Installer direkte fra browseren, fungerer offline til grundfunktioner og modtager push-notifikationer som en almindelig app.
Enkel feature-flagning
Funktioner aktiveres via miljovariabler, ikke komplekse systemer. Enkelt, palideligt og uden eksterne afhaengigheder.
Polling forst for kompatibilitet
Socket.io konfigureres til at starte med HTTP-polling og derefter opgradere til WebSocket. Dette garanterer, at aeldre browsere kan oprette forbindelse direkte.
Kortgengivelse med OpenStreetMap
Vi bruger Leaflet med OpenStreetMap -- helt gratis, ingen API-nogle kraeves, og aben kildekode.
In-proces-arbejdere
Baggrundsopgaver (udlob af anmodninger, GDPR-sletning) korer som planlagte processer i samme Node-proces -- ingen ekstern jobko nodvendig.
Dataflow
- Statisk indhold: Browser -> Traefik -> nginx -> HTML/JS/CSS
- API-kald: Browser -> Traefik -> Express -> PostgreSQL
- Realtid: Browser -> Traefik -> Socket.io (opgraderer fra polling til WebSocket)
CI/CD
Koderepoen hostes pa Codeberg med Woodpecker CI til automatiserede tests og builds. Hvert push korer backend- og frontendtests samt verificerer, at produktionsbygget fungerer.
Sikkerhedsbeslutninger
- JWT med HS256 -- Tilstandslos autentificering med 24 timers udlobstid.
- Pseudonyme navne -- BankID-navne vises aldrig automatisk.
- Omradenavne i stedet for koordinater -- Kun omradenavne vises, ikke praecise GPS-koordinater.
- Haversine i stedet for PostGIS -- Enklere, lettere og tilstraekkeligt til byskala.
- Hukommelsesbaseret hastighedsbegraensning -- Ingen Redis nodvendig for en enkelt serverdistribution.
Hosting
Covey hostes pa en VPS hos GleSYS i Stockholm, drevet af vedvarende energi. TLS-certifikater handteres automatisk via Let's Encrypt.