This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2022-02-07
Channels
- # announcements (38)
- # asami (14)
- # beginners (35)
- # biff (3)
- # calva (29)
- # cider (20)
- # clj-kondo (7)
- # cljdoc (38)
- # clojure (64)
- # clojure-art (2)
- # clojure-australia (1)
- # clojure-dev (6)
- # clojure-europe (30)
- # clojure-nl (4)
- # clojure-spec (4)
- # clojure-uk (9)
- # clojured (3)
- # clojurescript (87)
- # cursive (17)
- # datahike (2)
- # datomic (10)
- # defnpodcast (2)
- # emacs (2)
- # events (1)
- # fulcro (25)
- # gratitude (1)
- # introduce-yourself (1)
- # jobs-discuss (21)
- # lsp (103)
- # malli (41)
- # meander (8)
- # minecraft (3)
- # missionary (3)
- # nextjournal (20)
- # off-topic (10)
- # pedestal (1)
- # polylith (15)
- # portal (6)
- # releases (2)
- # ring (1)
- # ring-swagger (2)
- # sci (4)
- # shadow-cljs (5)
- # spacemacs (3)
- # sql (11)
- # xtdb (3)
I've pretty much finished rewriting the example project. it has the same features as before (a few crud text fields and a chat widget) but implemented with htmx. it was fun to set up actually. htmx has a nice websockets story. only thing left is to throw in an example of scheduling tasks with chime, then I'll move on to deployment/ops stuff probably. previously I finished authentication stuff including removing a login csrf vulnerability. also I'm now structuring the project into multiple "feature namespaces" which each expose the routes, static pages, TX listener fns etc for a particular feature. ("features" can have whatever level of granularity you want). everything defined in features is late-bound, so they can be redefined from the repl without needing to do a refresh/restart.
see https://github.com/jacobobryant/biff/blob/dev/example/src/com/example/feat/app.clj for example of a feature namespace. also look for hx- attributes to see htmx in action. there's a bit of hyperscript too (look for :_ )
oh also I finished making some updates to the transaction format. in particular now you can do :xt/id [:db/lookup {:user/email "
and biff will do an upsert basically. I.e. it'll ensure the email is unique without using it for the user document's ID. (it's implemented by creating a separate {:xt/id {:user/email "
document).