Tekninen läpinäkyvyys
Avoin lähdekoodi
Kaikki Coveyn lähdekoodi on avoimesti saatavilla Codebergissa. Kuka tahansa voi tarkastella, osallistua ja rakentaa koodin pohjalta.
Arkkitehtuurin yleiskatsaus
Covey koostuu neljästä palvelusta, jotka toimivat yhdessä Docker Composen kautta:
| Palvelu | Rooli |
|---|---|
| Frontend | Preactilla rakennettu web-käyttöliittymä, tarjoiltu nginx:llä |
| Backend | API ja reaaliaikainen viestintä Expressillä ja Socket.io:lla |
| Tietokanta | PostgreSQL 16 tietojen tallennukseen |
| Traefik | Käänteinen välityspalvelin automaattisella TLS-varmenteen hallinnalla |
Suunnitteluperiaatteet
Preact Reactin sijaan
Käytämme Preactia (3 kt) Reactin (40 kt) sijaan, jotta sovellus latautuu nopeasti myös vanhemmilla laitteilla ja hitailla yhteyksillä. API on lähes identtinen.
Progressive Web App (PWA)
Covey jaetaan PWA:na -- sovelluskauppaa ei tarvita. Asenna suoraan selaimesta, toimii offline-perustoiminnoissa ja saa push-ilmoituksia tavallisen sovelluksen tavoin.
Yksinkertainen ominaisuuslippujen hallinta
Ominaisuudet aktivoidaan ympäristömuuttujilla, ei monimutkaisilla järjestelmillä. Yksinkertaista, luotettavaa ja ilman ulkoisia riippuvuuksia.
Polling ensin yhteensopivuuden vuoksi
Socket.io on konfiguroitu aloittamaan HTTP-pollauksella ja päivittämään sitten WebSocketiin. Tämä takaa, että vanhemmat selaimet voivat yhdistää suoraan.
Karttojen renderöinti OpenStreetMapilla
Käytämme Leafletia OpenStreetMapin kanssa -- täysin ilmainen, ei API-avainta tarvita, ja avointa lähdekoodia.
Prosessin sisäiset työntekijät
Taustatehtävät (pyyntöjen vanheneminen, GDPR-poisto) ajetaan ajastettuina prosesseina samassa Node-prosessissa -- erillistä työjonoa ei tarvita.
Tietovirta
- Staattinen sisältö: Selain --> Traefik --> nginx --> HTML/JS/CSS
- API-kutsut: Selain --> Traefik --> Express --> PostgreSQL
- Reaaliaikainen: Selain --> Traefik --> Socket.io (päivittyy pollauksesta WebSocketiin)
CI/CD
Koodirepo sijaitsee Codebergissa ja käyttää Woodpecker CI:tä automatisoituihin testeihin ja rakennuksiin. Jokainen push ajaa backend- ja frontend-testit sekä varmistaa, että tuotantorakennelma toimii.
Turvallisuuspäätökset
- JWT ja HS256 -- Tilaton tunnistautuminen 24 tunnin vanhenemisajalla.
- Pseudonyymit nimet -- BankID-nimiä ei koskaan näytetä automaattisesti.
- Aluenimet koordinaattien sijaan -- Vain aluenimet näytetään, ei tarkkoja GPS-koordinaatteja.
- Haversine PostGIS:n sijaan -- Yksinkertaisempi, kevyempi ja riittävä kaupunkimittakaavaan.
- Muistipohjainen nopeusrajoitus -- Redis-palvelinta ei tarvita yksittäisen palvelimen käyttöönotossa.
Hosting
Covey toimii GleSYS:n VPS-palvelimella Tukholmassa, uusiutuvalla energialla. TLS-varmenteet hoidetaan automaattisesti Let's Encryptin kautta.