Kit
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.
Goal
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.
Quick start
Kit requires clj-new, installed preferably as a tool:
clojure -Ttools install com.github.seancorfield/clj-new '{:git/tag "v1.2.381"}' :as new
To create a new Kit application:
clojure -Tnew create :template io.github.kit-clj :name yourname/app
Latest versions
Profiles
Default libs included with no profile specified:
kit-core
kit-undertow
Additional profiles:
+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+socket-repl
- Adds thekit-repl
lib+sql
- Adds the default SQL libraries:kit-sql-conman
,kit-sql-migratus
, andkit-postgres
libs+conman
- Adds thekit-sql-conman
lib+hikari
- Adds thekit-sql-hikari
lib+migratus
- Adds thekit-sql-migratus
lib+mysql
- Adds thekit-sql-general
andkit-mysql
libs+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
Libs
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
- Deprecated. Usekit-sql-conman
andkit-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
Build Tool Support
Presently only Clojure deps is supported, however there are plans to add Leiningen support.
Documentation
Documentation can be found here
Emacs Integration
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.
Inspiration and thanks to
- 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
License
Copyright Β© 2021
Released under the MIT license.