@@ -45,9 +45,14 @@ tail. Steps marked ⚑ need an operator decision or action first.
4545
4646---
4747
48- ## Step 1 ⚑ — Real email for magic links (id-didi-sh)
48+ ## Step 1 — Real email for magic links (id-didi-sh) ✅ DONE 2026-07-06
4949
50- ** Decision first:** Resend vs Postmark (sender: ` no-reply@didi.sh ` ).
50+ ** Decided: Resend.** Hand-rolled Swoosh adapter over Req (the hex package
51+ fights the lockfile); proven end to end — production magic links land in
52+ a real inbox. Remaining rider (⚑ operator): verify the didi.sh domain in
53+ Resend + its DNS records in Vercel, which lifts the
54+ only-send-to-account-owner restriction and flips the sender to
55+ no-reply@didi.sh . Original scope follows.
5156
5257- Add the Swoosh adapter dep (` gen_smtp ` /` resend ` per pick) to ` mix.exs ` ;
5358 configure in ` config/runtime.exs ` (prod) with the API key from env —
@@ -60,7 +65,12 @@ tail. Steps marked ⚑ need an operator decision or action first.
6065 ` /access ` fallback page. Per the open-graph discipline, check spam
6166 placement once.
6267
63- ## Step 2 — Org + membership seeding (id-didi-sh)
68+ ## Step 2 — Org + membership seeding (id-didi-sh) ✅ DONE 2026-07-06
69+
70+ Done on local AND production (mix id.org / id.member; prod via release
71+ eval — note the ~ s() sigil gotcha and the 512MB requirement, both in the
72+ id repo changelog 2026-07-06_06). Aniel's membership pends his address.
73+ Original scope follows.
6474
6575- New mix task ` id.org ` (create org by domain-as-id + name) and
6676 ` id.member <email-or-didi_id> <org_id> <role> ` ; validate role against
0 commit comments