Parts is a toolkit for therapists working with the Internal Family Systems model. It provides a tool for easy, collaborative parts mapping, which can be used to facilitate conversations with clients during sessions.
Before starting development, install dependencies with:
make deps
This will install both the Clojure and the NPM dependencies required.
make repl
This will start a Clojure REPL that includes shadow-cljs (which we use to build our frontend). When we connect to this from CIDER (with cider-connect-clj
), the dev/repl
namespace will be automatically loaded.
From that namespace:
- The app server can be (re)started with
(go)
. This will also start theshadow-cljs
process for building the frontend and watching for changes. - We can switch to the ClojureScript REPL with
(cljs-repl)
- Use
:cljs/quit
to return to the Clojure REPL
make css-watch
This will start PostCSS to watch for changes in resources/styles/*.css
.
Run unit tests of the service using the kaocha test runner
make test
If additional libraries are required to support tests, add them to the
:test/env
alias definition indeps.edn
make test-watch
will run tests on file save, stopping the current test run on the first failing test. Tests will continue to be watched until Ctrl-c
is pressed.
We use Kamal to deploy a Docker container that will run the uberjar built with make dist
.
Make sure that the KAMAL_REGISTRY_PASSWORD
env var is exported so that the deploy can work.
Also edit config/deploy.yml to ensure it matches your setup. See the Kamal docs.
It’s possible to build an uberjar and run it locally to test before deploying:
make dist && make run-dist
A deployment can be started via:
# Always run tests before deploying
make test && make deploy
Copyright © 2025 Gosha Tcherednitchenko / A Possible Space Ltd