Lightweight, modular framework for scalable production systems.
ALPHA WARNING: kit-generator
and Kit modules / code
generation is in ALPHA meaning the API for code
generation is subject to change. This should not affect
users of Kit, but will affect anyone developing modules or
extending them. The libs/libraries are stable.
The goal of kit
is to provide a template for a robust,
scalable Clojure web application. It hides common plumbing
that is standard across projects via its libs system, while
exposing code that tends to be customized in the clj-new
template.
Thanks to integrant
, and aero
, the libs are simple
skeletons with the bulk of the customization being done in
the system configuration EDN file.
clojure -X:new :template io.github.kit-clj :name yourname/app :args '[+selmer]'
Default libs included with no profile specified:
kit-core
kit-undertow
kit-repl
Additional profiles:
+bare
- Only includes thekit-core
andkit-undertow
libraries as the foundation+xtdb
- Adds thekit-xtdb
lib+hato
- Adds thekit-hato
lib+metrics
- Adds thekit-metrics
lib+quartz
- Adds thekit-quartz
lib+redis
- Adds thekit-redis
lib+selmer
- Adds thekit-selmer
lib+nrepl
- Adds thekit-nrepl
lib, removes thekit-repl
lib+pgsql
- Adds thekit-sql
andkit-postgres
libs+mysql
- Adds thekit-sql-general
andkit-mysql
libs+full
- Adds the libskit-xtdb
,kit-hato
,kit-metrics
,kit-quartz
,kit-redis
,kit-selmer
, andkit-sql
kit-core
- basic utility functions used by some other libskit-xtdb
- Simple binding to connect to a XTDB database nodekit-hato
- HTTP client using hatokit-nrepl
- nREPL component for use in a running system. e.g. to connect to a production REPLkit-metrics
- Configurable metrics using iapetoskit-quartz
- Scheduler using cronut as an integrant binding for quartz. Exposes thecronut
API, simply some extensions foraero
and utilitieskit-redis
- An extension of core.cache for Redis via carminekit-repl
- Socket REPL integrant binding for use in a running system. e.g. to connect to a production REPLkit-selmer
- Templating configuration with selmerkit-sql
- Generic SQL integrant binding. Uses conman , next.jdbc , hugsql, and migratus directly, or implicitly. By default, importskit-postgres
lib which supports Postgresqlkit-postgres
- lib with data bindings and utilities for working with Postgreskit-sql-general
- General sql layer, just contains connection pooling (via hikari-cp) and jdbc wrapper (via next.jdbc).kit-mysql
- lib with data bindings and utilities for working with MySQL8+kit-undertow
- Server binding via ring-undertow-adapter
Presently only Clojure deps is supported, however there are plans to add Leiningen support.
Documentation can be found here
- integrant as the basis of the project
- aero for powerful configuration used throughout
- re-frame template
for code used directly in
kit-template
- Luminus framework from which
the initial project that
kit
's predecessor was built upon
Copyright © 2021
Released under the MIT license.