Architecture

packages/   MIT
  schema        zod config schema, limits, validators, portable JSON
  contrast      WCAG maths and accessible accent colours
  layouts       layout specs and the asset plan (which images, what size)
  presets       the six designs, palettes, remix
  serializer    config -> email-safe HTML, lint, budgets, .htm/.mailsignature
  animations    frame-drawing code for avatars, banners and logos (frame 0 is complete)
  ink           handwriting fonts, glyph outlines, pen tracing, stroke tracing (drawn/scanned)
  icons         social glyphs in four styles
  renderer      GIF/PNG encoding, budget ladder, Node + browser environments, bundles
  storage       adapters (disk, S3/R2/MinIO, HTTP) and the upload sanitizer
apps/       AGPL-3.0
  web           Next.js builder, landing and docs (static export)
  storage-server  upload server
  cli           npx mailmotion

One code path. The same serializer and renderer run in the browser (Web Worker), in Node (CLI, build-time gallery) and in tests, so the preview, the export and the CLI cannot drift.

Flow. config → planAssets → renderer draws each slot at 2x → content-hashed files → host → serializeSignature with the hosted URLs → HTML.

Storage is an adapter. A future cloud CDN is just another adapter.