{trident/<artifact> {:mvn/version "0.1.3"}}
Because I had to call it something
Trident is my personal experiment in creating a highly-abstracted web application framework for use with Datomic Cloud. But it's also just a collection of libraries, containing anything I happen to abstract out of projects I'm working on.
My top-level goal with Trident is to maximize code reuse (especially my own, but hopefully for others as well). This has two parts:
-
There should be high-level interfaces that give you lots of leverage (like frameworks).
-
When the high-level interfaces don't cut it, it should be easy to use only the parts you want, customizing behavior as needed (like libraries).
I keep the code in a single src
dir, but I provide multiple artifacts. Any
code in src/trident/<foo>
is available in the <foo>
artifact. For
example, {trident/cli {:mvn/version "<version>"}}
will give you access to the
trident.cli
namespace. All artifacts use the same version.
I use the trident/docs
artifact for documentation on cljdoc. You can browse
the namespaces there to see what's available, but briefly:
-
repl
. A handful of convenience functions for use at the repl. -
util
. A collection of utility functions & macros. -
cli
(includesutil
). Makes it easy to define and reuse CLIs for tools.deps-based build tasks. -
build
(includesutil
,cli
). A collection of build tasks made withtrident/cli
. -
datomic
(includesutil
). Janky file-based persistence for Datomic Free. -
datomic-cloud
(includesutil
). Tools for Datomic Cloud. -
ring
. Some Ring middleware. -
firebase
. Functions for authenticating Firebase user tokens. -
ion
(includesutil
). Utilities for working with Datomic Ions -
web
(includesutil
,datomic-cloud
,firebase
,ion
,ring
). Highly contrived web framework. -
web-repl
(includesweb
). A dev web server for use withtrident/web
. -
datascript
(includesutil
). Frontend tools for syncing Datascript with Datomic. -
views
(includesutil
). Some Reagent components and stuff. -
frontend
(includesutil
,datascript
,views
). Just a bundle of other artifacts.
Also see trepl.py, a script that makes running build tasks fast.
While I hope Trident will be useful for others, I'm primarily focusing on my own use cases because 1) there are things I want to build, 2) developing Trident as I build real things will help to make sure it's actually useful. With that out of the way, if you're interested in anything Trident provides, I'd love to chat.
#trident
on Clojurians
Distributed under the EPL v2.0
Copyright © 2019 Jacob O'Bryant.