docs: establish project documentation baseline

This commit is contained in:
Urban Modig
2026-07-26 13:03:01 +02:00
parent 2f7b99fb21
commit f9246d4463
12 changed files with 716 additions and 1 deletions

View File

@ -0,0 +1,28 @@
# 001 Monorepo med separata applikationer
## Status
Accepterat
## Datum
2026-07-23
## Sammanhang
HemHub behöver en webbläsarklient och ett server-API. Båda delarna utvecklas
inkrementellt och behöver kunna versionshanteras och dokumenteras tillsammans.
## Beslut
Frontend och backend ligger i samma Git-repository, i katalogerna `frontend/`
respektive `backend/`. De är separata applikationer med egna byggverktyg,
beroenden och startkommandon.
## Konsekvenser
- En feature kan ändra frontend, backend, tester och dokumentation atomärt.
- En gemensam historik beskriver hela systemet.
- Applikationerna kan startas och testas oberoende.
- Repositoryt har ingen gemensam rotbyggprocess; relevanta kommandon körs i
respektive applikationskatalog.

View File

@ -0,0 +1,32 @@
# 002 Relativa API-adresser och lokal utvecklingsproxy
## Status
Accepterat
## Datum
2026-07-23
## Sammanhang
Frontend körs lokalt med Vite på port 5173 och backend med Spring Boot på port
8080. Frontend behöver nå API:t utan miljöspecifika, hårdkodade backendadresser
i applikationskoden.
## Beslut
Frontend använder relativa API-adresser under `/api`. Vites utvecklingsserver
proxar `/api` till `http://localhost:8080`.
Ingen generell CORS-konfiguration införs i backend så länge webbläsaren anropar
Vites origin och Vite vidarebefordrar anropet.
## Konsekvenser
- Frontendkoden innehåller inte en lokal fullständig backend-URL.
- Lokal utveckling kräver att backend är tillgänglig på port 8080 för
API-anrop via proxyn.
- En separat CORS-policy behöver inte underhållas för nuvarande lokala flöde.
- En framtida driftlösning måste ge `/api` en motsvarande same-origin-väg eller
medföra ett nytt dokumenterat beslut.

View File

@ -0,0 +1,34 @@
# 003 Centrala användare och lokalt val av aktiv användare
## Status
Accepterat
## Datum
2026-07-24
## Sammanhang
HemHub behöver veta vem som använder gränssnittet, men har ännu ingen
autentisering. Användarlistan ska vara gemensam medan själva valet kan vara
lokalt för den aktuella browsern.
## Beslut
Användare lagras centralt via backend och hämtas från `/api/users`. Frontend
lagrar endast vald användares UUID i `localStorage` med nyckeln
`hemhub.activeUserId`.
Vid appstart jämförs det lokala id:t med backendens användarlista. Ett giltigt id
återanvänds och ett ogiltigt id tas bort. `Logga ut` tar bort nyckeln och visar
användarvalet igen.
## Konsekvenser
- Samma browser kan återanvända sitt senaste giltiga användarval.
- En annan browser eller en rensad browserlagring måste välja användare igen.
- Endast id lagras lokalt; aktuellt namn kommer från backendens lista.
- Valet synkroniseras inte mellan browsers eller enheter.
- Lösningen identifierar en användare i gränssnittet men ger ingen säker
autentisering, session eller behörighetskontroll.

View File

@ -0,0 +1,30 @@
# 004 Kortlivade feature-branches
## Status
Accepterat
## Sammanhang
HemHub utvecklas inkrementellt med avgränsade ändringar. Historiska
feature-branches ska kunna raderas efter merge utan att projektets motiv och
aktuella läge försvinner.
## Beslut
Varje feature eller avgränsad ändring utvecklas på en kortlivad branch som
skapas från uppdaterad `main`. Kod, tester och relevant dokumentation ingår i
samma ändring.
Commit och push görs först efter uttrycklig instruktion. Merge sker efter
verifiering, och `main` ska representera verifierad kod. Därefter kan branchen
raderas.
## Konsekvenser
- Pågående arbete isoleras från `main`.
- En feature kan granskas och verifieras som en sammanhållen ändring.
- Dokumentationen måste uppdateras före merge så att raderade branches inte
behövs för att förstå projektet.
- Övergripande beslut bevaras i `docs/decisions/` och faktisk featurehistorik i
`docs/features/`.

View File

@ -0,0 +1,52 @@
# 005 Riktning för produktionsdeployment
## Status
Accepterat som planerad riktning, ännu inte implementerat
## Sammanhang
HemHub använder i nuläget H2 för lokal utveckling och tester. Repositoryt saknar
fortfarande container-, pipeline- och produktionskonfiguration, men den
övergripande målbilden för byggande och drift behöver vara dokumenterad innan
den implementeras.
Källkoden ligger i Gitea och den planerade produktionsmiljön är Ubuntu-servern
Biff.
## Beslut
- PostgreSQL ska användas som produktionsdatabas.
- Frontend och backend ska paketeras som Docker-images.
- Drone ska bygga och publicera images till ett privat registry.
- Watchtower ska uppdatera tjänsterna när nya images publiceras.
- Nginx kan användas som reverse proxy.
Detta ADR fastställer komponenterna och ansvarsfördelningen på övergripande
nivå. Det inför inte någon konfiguration och innebär inte att lösningen redan
har driftverifierats.
## Konsekvenser
- Kommande produktionsarbete behöver införa och verifiera PostgreSQL-stöd,
Dockerpaketering och en Drone-baserad leveranskedja.
- Images behöver kunna publiceras till ett privat registry som Biff kan nå.
- Uppdateringsflödet behöver utformas så att Watchtower kan hämta och starta nya
images på ett kontrollerat sätt.
- Nginx är ett möjligt reverse proxy-lager, inte en fastställd detaljkonfiguration.
- Lokal utveckling och automatiska tester fortsätter använda H2 tills ett
separat beslut eller en feature ändrar detta.
## Öppna detaljer
Följande beslutas först när produktionslösningen implementeras:
- exakt containerstruktur;
- image-namn och taggningsstrategi;
- produktions-URL;
- secrets och hur de tillförs till pipeline och tjänster;
- exakt Nginx-konfiguration;
- exakt Drone-, registry-, Watchtower- och deploymentkonfiguration.
IP-adresser, credentials och andra miljöspecifika känsliga värden ska inte
dokumenteras här.