Architecture
text
[data / triggers]
|
v
OxyKit.Flow ----render----> OxyKit.Render
|
+----file----> disk
|
+----mail----> OxyKit.Mail ----SMTP----> inboxBoundaries
| Core | Owns | Does not own |
|---|---|---|
| Render | Document transforms (HTTP sidecar) | Tenancy, billing, SMTP |
| Queue, retries, DKIM, SMTP, send acceptance | Document generation | |
| Flow | Persisted jobs, calling Render, delivering via file / mail | In-process rendering or SMTP |
Render stays process-isolated so exotic engines (for example a legacy Crystal sidecar) can sit beside it. Flow talks to Render only through OxyKit.Render.Client (never Core).
Mail owns delivery. POST /api/v1/email/send returns sent (200) or accepted / scheduled (202). Orchestrators must not re-send on accepted.
Companion UI
oxykit-mail-web is the Vue SPA for Mail’s dashboard. It is not a fourth suite core and is not a substitute for this docs site.
Host patterns
| Product | HTTP style | Priority |
|---|---|---|
| Mail, Flow | FastEndpoints + ErrorOr | DX — shared endpoint shape, Scalar |
| Render | Minimal APIs | Resources / AOT path — thin sidecar |
Authoritative HTTP shapes: each API’s /openapi/v1.json and Scalar /scalar in Development.