Skip to content

Project templates for deps-new #404

@practicalli-johnny

Description

@practicalli-johnny

Create a repository of Clojure CLI project templates that include common code and configuration to support production grade services and libraries

dev/user.clj for development tools ✅

  • hotloading libraries with add-libs
  • portal data inspector
  • mulog and tap publisher
  • find-deps library search

Editor support ✅

  • Emacs .dir-locals.el configuration with recommended aliases
  • Java sources on the class path (not included - :src/java alias from Practicalli Clojure CLI Config can provide if neccessary

Build.tools configuration ✅

Include project alias for tools.build and a build.clj built tasks

DONE: research required on how best to use build.clj files and investigation into seancorfield/build-clj project - using tools.build directly

Suggested Templates

service - clojure.main and clojure.exec execution options, with build.clj, hotload libs, portal data inspector, kaocha, mulog

  • no options: creates simple webserver with jetty, using atom to hold ref to running server, mulog & publisher types
  • http-kit: uses http-kit instead of jetty
  • integrant: integrant and integrant repl with example components and aero configuration
  • api - adds Reitit libs, middleware and example code

Optional parts

+postgres - adds next.jdbc, honeysql, postgresql driver. Example code for clojure.specs that matches the example database schema. Example persistence layer. Tools to generate spec from dB schema (and vice versa)

Common aliases ✅

  • :run/service - run the project using clojure.exec
  • :dev/reloaded - include dev/user.clj file and associated development tools
  • :test/env - paths and deps for test runners
  • :test/run - run kaocha test runner
  • :test/watch - run kaocha test runner in watch mode

Common dependencies

  • Latest Clojure release
  • kaocha test runner (include a tests.edn configuration)
  • mulog for logging
  • Integrant & areo for system configuration
  • add-libs for hot-loading
  • reitit for routing (APIs)

Related projects

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions