cratefield-module-email-signup
Email signup for a Cratefield venture: POST /v1/email-signup collects
an address, double opt-in via a signed confirmation link, one-click
unsubscribe, admin CSV export and hard delete.
use EmailSignup;
let module = new
.double_opt_in
.confirm_ttl_days
.retention_days_pending;
Composable with cratefield-module-waitlist:
use EmailSignup;
let module = new.subscribe_on_waitlist_confirm;
adds confirmed waitlist addresses to the signup list through the
waitlist.confirmed event — no crate dependency between the modules.
Register the mail templates in the venture's src/lib.rs, in the
venture's own style: they render through cratefield-mail-templates
(ADR 0030) with the MailTheme you give them. default_templates() renders
in a theme built from the venture's core Brand and its MAIL_THEME config
instead; either way, venture overrides registered later win.
use Harness;
use ;
use themed_templates;
let theme = new
.logo
.light;
let builder = builder.templates;
See docs/ARCHITECTURE.md section 6 (Email signup) and section 11
(no enumeration, tokens, admin auth, retention).
MIT. Built in the open for Cratefield, a Factory Zero venture.