Lightweight, modular framework for scalable production systems.
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.
Kit requires clj-new, installed preferably as a tool:
clojure -Ttools install com.github.seancorfield/clj-new '{:git/tag "v1.2.381"}' :as clj-new
To create a new Kit application:
clojure -Tclj-new create :template io.github.kit-clj :name yourname/app
Default libs included with no profile specified:
kit-corekit-undertow
Additional profiles:
+xtdb- Adds thekit-xtdblib+hato- Adds thekit-hatolib+metrics- Adds thekit-metricslib+quartz- Adds thekit-quartzlib+redis- Adds thekit-redislib+selmer- Adds thekit-selmerlib+nrepl- Adds thekit-nrepllib+socket-repl- Adds thekit-repllib+sql- Adds the default SQL libraries:kit-sql-conman,kit-sql-migratus, andkit-postgreslibs+conman- Adds thekit-sql-conmanlib+hikari- Adds thekit-sql-hikarilib+migratus- Adds thekit-sql-migratuslib+mysql- Adds thekit-sql-generalandkit-mysqllibs+full- Adds the libskit-xtdb,kit-hato,kit-metrics,kit-quartz,kit-redis,kit-selmer,kit-repl,kit-sql-conman,kit-postgres, andkit-sql-migratus
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 thecronutAPI, simply some extensions foraeroand 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- Deprecated. Usekit-sql-conmanandkit-sql-migratus. Pulls in both of these as generic SQL integrant binding. Uses conman , next.jdbc , hugsql, and migratus directly, or implicitlykit-sql-conman- Uses conman , next.jdbc , hugsql,kit-sql-hikari- General sql layer, just contains connection pooling ( via hikari-cp) and jdbc wrapper ( via next.jdbc) .kit-sql-migratus- uses migratus for SQL migrationskit-postgres- lib with data bindings and utilities for working with Postgreskit-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
An emacs package is available which provides a Magit-style interface to clj-new and deps-new and provides a command to create Kit web applications.
- 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.