Liking cljdoc? Tell your friends :D

Library Overview

Wagoe is a monorepo of 34 libraries published to Clojars under the com.wagoe group. Every library follows the same FC/IS structure, making the codebase instantly familiar across libraries.

Before you commit to one: Other stores covers keeping your own modules off SQL, and Leaving Wagoe what you keep if you drop the framework.

Foundation

LibraryPurpose

config

Aero config loading per profile and the typed accessors libraries read settings through.

core

Foundation: validation framework, case/type conversion utilities, interceptor pipeline, feature flags. No shell layer — entirely pure functions.

observability

Cross-cutting observability: structured logging, metrics, tracing breadcrumbs, and pluggable error reporters (Datadog, Sentry).

platform

HTTP routing/interceptors, database integration, CLI/runtime wiring. Infrastructure for feature libraries.

platform-sql

The SQL layer platform brings: JDBC adapters, migrations, seeding, leases. Usable without the HTTP stack.

ui-style

Shared UI contract: centralized CSS/JS bundles, tokens, and reusable style conventions across libraries.

shared-ui

Shared Hiccup primitives: form controls, tables, layouts, modals, icons. Pure functions, no ports — extracted to dissolve the admin↔user dependency cycle.

i18n

Internationalisation: marker-based translation, locale chain resolution, EDN catalogues, Ring middleware, and Babashka tooling.

Application

LibraryPurpose

user

Authentication, authorization, MFA (TOTP), session management, JWT tokens.

admin

Auto-generated CRUD admin UI from schema. Hiccup + HTMX, no frontend build step.

storage

File storage: local filesystem, AWS S3 / S3-compatible and Google Cloud Storage backends.

scaffolder

Interactive module code generator. Generates FC/IS modules with tests and migrations.

cache

Distributed caching with TTL, atomic operations, and multi-tenant isolation. Redis and in-memory backends.

events

Asynchronous event bus for cross-process module communication. Redis Streams and in-memory, at-least-once delivery with consumer groups.

jobs

Background job processing with priority queues, retries, exponential backoff, multi-tenant support.

email

Email sending: SMTP, async, and queued via jobs integration.

tenant

Multi-tenancy with PostgreSQL schema-per-tenant isolation. Requires PostgreSQL.

realtime

WebSocket real-time communication, JWT auth, topic-based pub/sub.

Extensions

LibraryPurpose

external

External service adapters: Twilio SMS/WhatsApp, SMTP/IMAP, FTPS, SOAP.

payments

Payment provider abstraction: Stripe, Mollie, and Mock adapters with checkout-session flow and webhook verification.

workflow

Declarative state machine workflows with permission-based transitions and audit trail.

search

Full-text search: PostgreSQL FTS with LIKE fallback for H2/SQLite.

reports

PDF, Excel (XLSX), Word (DOCX) and CSV generation via defreport macro.

calendar

Recurring events, RRULE recurrence (DST-aware), iCal export/import, conflict detection.

geo

Geocoding (OSM/Google/Mapbox), DB-backed cache, rate limiting, Haversine distance.

audience

Rule-based audience segmentation: defaudience macro, hybrid SQL + predicate evaluation, AND/OR/NOT composition, cached membership.

webhooks

Outbound webhooks: bus events delivered as signed HTTP requests, one retried job per delivery, per-tenant subscriptions, SSRF refusal, delivery log in the admin.

push

Mobile push notifications via FCM and APNs: defpush macro, device token lifecycle, job-backed reliable delivery, delivery analytics.

ai

Framework-aware AI tooling: NL scaffolding, error explainer, test generator, SQL copilot, docs wizard.

Developer Tooling

These are published to Clojars like the rest — they are listed separately because you reach for them at development time rather than depending on them from application code.

LibraryPurpose

devtools

Dev-only: error pipeline (WGE codes), dev dashboard (localhost:9999), REPL power tools, guidance engine, request recording, AI REPL commands.

tools

Dev-only: deploy to Clojars, config doctor, setup wizard, scaffolder integration, quality checks, i18n management.

test

Test kit for applications: boots the app’s own system on in-process adapters, a Ring client with session and CSRF, deterministic jobs, events and realtime.

wagoe-cli

The wagoe command: wagoe new to create a project, wagoe add to wire in an optional module, wagoe list modules.

wagoe-mcp

MCP server over stdio: exposes the framework’s tools and resources to editor agents via JSON-RPC.

Clojars coordinates

All libraries share the com.wagoe group:

{com.wagoe/wagoe-core      {:mvn/version "1.2.0"}
 com.wagoe/wagoe-user      {:mvn/version "1.2.0"}
 com.wagoe/wagoe-admin     {:mvn/version "1.2.0"}
 com.wagoe/wagoe-platform  {:mvn/version "1.2.0"}
 ;; etc.
 }

Can you improve this documentation? These fine people already did:
Thijs Creemers & thijscreemers
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