Teknisk transparens
Öppen källkod
All Coveys källkod är öppet tillgänglig på Codeberg. Vem som helst kan granska, bidra till och bygga vidare på koden.
Arkitekturöversikt
Covey består av fyra tjänster som samverkar via Docker Compose:
| Tjänst | Roll |
|---|---|
| Frontend | Webbgränssnitt byggt med Preact, serverat via nginx |
| Backend | API och realtidskommunikation med Express och Socket.io |
| Databas | PostgreSQL 16 för datalagring |
| Traefik | Omvänd proxy med automatisk TLS-certifikathantering |
Designprinciper
Preact istället för React
Vi använder Preact (3 KB) istället för React (40 KB) för att appen ska laddas snabbt även på äldre enheter och långsamma anslutningar. API:t är nästan identiskt.
Progressive Web App (PWA)
Covey distribueras som en PWA — ingen appbutik behövs. Installera direkt från webbläsaren, fungerar offline för grundfunktioner, och får pushnotiser som en vanlig app.
Enkel featureflaggning
Funktioner aktiveras via miljövariabler, inte komplexa system. Enkelt, pålitligt och utan externa beroenden.
Polling-först för kompatibilitet
Socket.io konfigureras att starta med HTTP-polling och sedan uppgradera till WebSocket. Detta garanterar att äldre webbläsare kan ansluta direkt.
Kartrendering med OpenStreetMap
Vi använder Leaflet med OpenStreetMap — helt gratis, ingen API-nyckel krävs, och öppen källkod.
Inprocessarbetare
Bakgrundsuppgifter (utgång av förfrågningar, GDPR-radering) körs som schemalagda processer i samma Node-process — ingen extern jobbkö behövs.
Dataflöde
- Statiskt innehåll: Webbläsare → Traefik → nginx → HTML/JS/CSS
- API-anrop: Webbläsare → Traefik → Express → PostgreSQL
- Realtid: Webbläsare → Traefik → Socket.io (uppgraderar från polling till WebSocket)
CI/CD
Kodrepot hostas på Codeberg med Woodpecker CI för automatiserade tester och byggen. Varje push kör backend- och frontendtester samt verifierar att produktionsbygget fungerar.
Säkerhetsbeslut
- JWT med HS256 — Stateless autentisering med 24 timmars utgångstid.
- Pseudonyma namn — BankID-namn visas aldrig automatiskt.
- Haversine istället för PostGIS — Enklare, lättare och tillräckligt för stadsskala.
- Minnesbaserad hastighetsbegränsning — Ingen Redis behövs för ett enda serverdistribution.
Hosting
Covey hostas på en VPS hos GleSYS i Stockholm, drivet av förnybar energi. TLS-certifikat hanteras automatiskt via Let's Encrypt.