30 lines
1.3 KiB
Markdown
30 lines
1.3 KiB
Markdown
# 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
|
|
- [x] Internal API client for data fetches — `ajet.chat.shared.api-client` in 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
|