cratefield-module-email-signup
Email signup for a Factory Zero 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 default mail templates in harness.rs:
use Harness;
use default_templates;
// module defaults; venture overrides registered later win
let builder = builder.templates;
See docs/ARCHITECTURE.md section 6 (Email signup) and section 11
(no enumeration, tokens, admin auth, retention).