added media fixes, search, push updates, pwa, metrics. preparing release 1.0
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
# ADR 0001: Monolith over microservices
|
||||
|
||||
- Status: accepted
|
||||
- Date: 2026-09
|
||||
|
||||
## Context
|
||||
The messenger serves a single family (tens of users) on a home-lab mini PC
|
||||
with ~8 GB RAM. A microservice split would add operational overhead
|
||||
(networking, service discovery, per-service containers) with zero benefit at
|
||||
this scale.
|
||||
|
||||
## Decision
|
||||
Build a single Go process exposing REST, WebSocket, media serving and static
|
||||
files, with PostgreSQL as the only external state. Internal packages
|
||||
(`store`, `auth`, `realtime`, `api`, `media`) are cleanly separated with
|
||||
explicit interfaces, so extraction later is mechanical.
|
||||
|
||||
## Consequences
|
||||
- One container, trivial `docker compose up`.
|
||||
- In-process WebSocket hub gives O(1) presence checks for push decisions.
|
||||
- If the service ever needs horizontal scaling, `realtime` and `store`
|
||||
already hide their implementations behind interfaces.
|
||||
Reference in New Issue
Block a user