Crispr backend β Kong feasibility workshops and PoV tracking (Phoenix API and exports)
1.2K
Backend for Crispr, a browser-based multi-user app for running Kong Technical Feasibility Workshops (TFW) and tracking Proof of Value (PoV) progress. Elixir/Phoenix, serving a JSON API, Phoenix Channels for the real-time canvas, and the Excel/Word exports.
Pair it with crispr-clientβ ,
which serves the React frontend and proxies to this image.
π Full documentation: https://github.com/svenwal/crisprβ
| Tag | Meaning |
|---|---|
latest | Newest stable release |
beta-latest | Newest pre-release (a SemVer tag containing a hyphen) |
0.6.1, 0.6.0, β¦ | A specific release |
Built for linux/amd64 and linux/arm64.
docker run -p 4000:4000 \
-e SECRET_KEY_BASE="$(openssl rand -base64 48)" \
-e ADMIN_PASSWORD=changeme \
-e DATABASE_PATH=/data/crispr.db \
-e PHX_HOST=localhost \
-v crispr_data:/data \
svenwal/crispr-server:latest
The SQLite database is created and migrated automatically on first boot.
| Variable | Required | Default | Description |
|---|---|---|---|
SECRET_KEY_BASE | yes | β | Signs cookies and sessions. Generate with mix phx.gen.secret. |
ADMIN_PASSWORD | yes | β | Password for the admin area. |
DATABASE_PATH | yes | β | Absolute path to the SQLite file, e.g. /data/crispr.db. |
PHX_HOST | no | example.com | A single public hostname β no scheme, no port. Unless CORS_ORIGINS is set this is also the host the browser's Origin must match before Phoenix upgrades a WebSocket, so behind a proxy it must be the hostname users type. |
PORT | no | 4000 | Listen port. |
POOL_SIZE | no | 5 | SQLite connection pool size. |
SUGGESTIONS_FILE | no | /data/suggestions.json | Path to the use-case suggestions library. |
CORS_ORIGINS | no | (unset) | Comma-separated frontend origins allowed cross-origin. Setting it also replaces the PHX_HOST WebSocket origin check. |
AI_API_URL | no | (unset) | OpenAI-compatible chat-completions endpoint for the AI workshop summary. Unset disables the feature. |
AI_API_HEADER_NAME | no | Authorization | Auth header name for that endpoint. |
AI_API_HEADER_VALUE | no | (unset) | Auth header value, e.g. Bearer sk-β¦. Required alongside AI_API_URL. |
AI_MODEL | no | gpt-4o-mini | Model id sent in the request body. |
Workshop pages stuck on "Loadingβ¦"? Almost always
PHX_HOST. The REST API is not origin-checked but the WebSocket is, so everything except the live canvas looks healthy while channel joins are refused with 403.
/data β SQLite database, and the suggestions library. Mount it to persist.GET /healthz/live β liveness, no dependencies.GET /healthz/ready β readiness, checks the database.Content type
Image
Digest
sha256:fe4e3074aβ¦
Size
22.4 MB
Last updated
3 days ago
docker pull svenwal/crispr-server