Sign inSign up

svenwal/crispr-server

By svenwal

β€’Updated 3 days ago

Crispr backend β€” Kong feasibility workshops and PoV tracking (Phoenix API and exports)

Image
0

1.2K

svenwal/crispr-server repository overview

⁠Crispr β€” server

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⁠

⁠Tags

TagMeaning
latestNewest stable release
beta-latestNewest pre-release (a SemVer tag containing a hyphen)
0.6.1, 0.6.0, …A specific release

Built for linux/amd64 and linux/arm64.

⁠Quick start

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.

⁠Configuration

VariableRequiredDefaultDescription
SECRET_KEY_BASEyesβ€”Signs cookies and sessions. Generate with mix phx.gen.secret.
ADMIN_PASSWORDyesβ€”Password for the admin area.
DATABASE_PATHyesβ€”Absolute path to the SQLite file, e.g. /data/crispr.db.
PHX_HOSTnoexample.comA 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.
PORTno4000Listen port.
POOL_SIZEno5SQLite connection pool size.
SUGGESTIONS_FILEno/data/suggestions.jsonPath to the use-case suggestions library.
CORS_ORIGINSno(unset)Comma-separated frontend origins allowed cross-origin. Setting it also replaces the PHX_HOST WebSocket origin check.
AI_API_URLno(unset)OpenAI-compatible chat-completions endpoint for the AI workshop summary. Unset disables the feature.
AI_API_HEADER_NAMEnoAuthorizationAuth header name for that endpoint.
AI_API_HEADER_VALUEno(unset)Auth header value, e.g. Bearer sk-…. Required alongside AI_API_URL.
AI_MODELnogpt-4o-miniModel 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.

⁠Volumes and health

  • /data β€” SQLite database, and the suggestions library. Mount it to persist.
  • GET /healthz/live β€” liveness, no dependencies.
  • GET /healthz/ready β€” readiness, checks the database.

⁠Source and licence

https://github.com/svenwal/crispr⁠

Tag summary

Content type

Image

Digest

sha256:fe4e3074a…

Size

22.4 MB

Last updated

3 days ago

docker pull svenwal/crispr-server