1.3 KiB
1.3 KiB
Web Session Manager Plan
Stack
- http-kit (HTTP server + SSE)
- reitit (routing) + Ring middleware
- Hiccup for HTML templating
- Datastar Clojure SDK (dev.data-star.clojure/sdk) for SSE-driven reactivity
- No ClojureScript — server-rendered with Datastar enhancement
Responsibilities
- Web session manager: manages live browser connections
- Serves Hiccup-rendered pages
- Holds Datastar SSE connections, pushes HTML fragments on events
- Subscribes to NATS for real-time events — no direct PG connection
- Publishes ephemeral events (typing indicators) to NATS — no API round-trip
- Fetches full data from API (internal HTTP calls), not directly from DB
- Sits behind auth gateway (all requests pre-authenticated)
TODO
- http-kit server setup with Datastar SDK (http-kit adapter)
- Design page layout / Hiccup components
- Integrate Datastar (CDN or vendor the JS)
- Chat view: channel list, message list, input
- NATS subscription for chat events
- NATS publish for typing indicators
- Internal API client for data fetches —
ajet.chat.shared.api-clientin shared/ - SSE endpoint: push Datastar fragments on events
- Connection tracking (atom of connected SSE clients)
Login page— Auth GW owns the login page; Web SM never sees unauthenticated users