Liking cljdoc? Tell your friends :D

Title: Boundary Demo (10–15 min) — Batteries included, boundaries enforced

Audience

  • Clojure teams building internal tools/SaaS backends
  • Goal: show speed + structure (FC/IS), security (MFA), SSR/HTMX, and observability

Prereqs (on screen briefly)

Structure

  • 00:00–01:00 — Hook & value prop
  • 01:00–04:00 — Run starter, tour architecture (FC/IS)
  • 04:00–09:00 — Scaffold a module, migrate, admin UI in action
  • 09:00–12:00 — MFA enable/login flow
  • 12:00–14:00 — Observability and error handling
  • 14:00–15:00 — Build/deploy + recap

Script

00:00–01:00 — Hook & value prop

  • "Boundary helps teams ship secure, observable Clojure apps fast — with clean architecture and no frontend build step. Batteries included, boundaries enforced."
  • Show README tagline + quickstart briefly.

01:00–04:00 — Run starter, tour architecture

  • Terminal: clojure -M:repl-clj, in REPL: (require '[integrant.repl :as ig-repl]) (ig-repl/go)
  • Browser: open http://localhost:3000 (home page)
  • Explain module layout: src/boundary/{module}/core/, shell/, ports.clj, schema.clj
  • Reinforce FC/IS: core = pure; shell = I/O/validation/adapters; ports = protocols.

04:00–09:00 — Scaffold a module

  • Terminal: scaffold
    • clojure -M -m boundary.scaffolder.shell.cli-entry generate \
    • --module-name product \
    • --entity Product \
    • --field name:string:required \
    • --field sku:string:required:unique \
    • --field price:decimal:required
  • Terminal: clojure -M:migrate up
  • REPL: (ig-repl/reset)
  • Browser: Admin UI → products listed, create/edit/delete
  • Call out validation: Malli schemas, snapshot tests; show clojure -M:test:db/h2 --focus-meta :unit

09:00–12:00 — MFA enable/login

  • Terminal: setup + enable
    • curl -X POST http://localhost:3000/api/auth/mfa/setup -H "Authorization: Bearer <token>"
    • curl -X POST http://localhost:3000/api/auth/mfa/enable -H "Authorization: Bearer <token>" -d '{"secret":"...","verificationCode":"123456"}'
  • Terminal: login with MFA
    • curl -X POST http://localhost:3000/api/auth/login -d '{"email":"user@example.com","password":"...","mfa-code":"123456"}'
  • Explain where teams enforce MFA, and that it’s production‑ready out of the box.

12:00–14:00 — Observability

  • Explain interceptor pattern: service/persistence operations wrap logging/metrics/error reporting.
  • Show a simple service call and a typed error propagating with an operation name.
  • Mention providers: dev no‑op, Datadog, Sentry plug‑ins; swap per env without code churn.

14:00–15:00 — Build/deploy + recap

  • Terminal: clojure -T:build clean && clojure -T:build uber then java -jar target/boundary-*.jar server
  • Optional Dockerfile snippet
  • Recap: "Batteries included, boundaries enforced — FC/IS, SSR/HTMX, admin + MFA, and observability ready from day one."

Recording tips

  • Keep terminal font large, dark theme.
  • Pre‑seed a JWT token or mock for MFA.
  • Use two browser windows: app and admin.
  • Have migrations and scaffolder ready to avoid delays.

Follow‑ups (links to include in description)

Can you improve this documentation?Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close