init commit
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
{:paths ["src" "resources"]
|
||||
:deps {org.clojure/clojure {:mvn/version "1.12.0"}
|
||||
http-kit/http-kit {:mvn/version "2.8.0"}
|
||||
metosin/reitit {:mvn/version "0.7.2"}
|
||||
ring/ring-core {:mvn/version "1.13.0"}
|
||||
hiccup/hiccup {:mvn/version "2.0.0-RC4"}
|
||||
dev.data-star.clojure/sdk {:mvn/version "1.0.0-RC5"}
|
||||
ajet/chat-shared {:local/root "../shared"}}
|
||||
:aliases
|
||||
{:run {:main-opts ["-m" "ajet.chat.web.core"]}
|
||||
:dev {:extra-paths ["dev"]
|
||||
:extra-deps {nrepl/nrepl {:mvn/version "1.3.0"}
|
||||
cider/cider-nrepl {:mvn/version "0.50.2"}
|
||||
refactor-nrepl/refactor-nrepl {:mvn/version "3.10.0"}}}}}
|
||||
@@ -0,0 +1,29 @@
|
||||
# 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
|
||||
@@ -0,0 +1,5 @@
|
||||
(ns ajet.chat.web.core
|
||||
"Web session manager — http-kit + Hiccup + Datastar SSE.")
|
||||
|
||||
(defn -main [& _args]
|
||||
(println "ajet-chat web starting..."))
|
||||
Reference in New Issue
Block a user