brackt/app
Chris Parsons 2afb4c3c0d Add branded dark-themed HTML email template
Introduces a shared email module that wraps all transactional emails in a
cohesive dark-themed template matching the site's visual identity (Barlow
font, #14171e background, #adf661 CTA buttons, logomark PNG header).

- app/lib/email.server.ts: new module with sendEmail, wrapInEmailTemplate,
  emailButton, emailParagraph, and escapeHtml helpers; Resend instance is
  lazily initialized as a singleton
- public/email-logo.png: 96×124px PNG of the logomark for email use (SVG
  gradients are not supported in Outlook)
- auth.server.ts: password reset and email verification now use the branded
  template; errors are thrown so Better Auth can surface failures
- support.tsx: internal notification uses sendEmail; adds a user-facing
  branded confirmation email (fire-and-forget so failures don't surface to
  the user); plain text fallback included
- scripts/sync-prod-db.sh: remove first_name/last_name from sanitize query
  (columns were dropped in #399)
- 13 unit tests covering all template helpers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 11:12:48 -07:00
..
components Harden sport icon cleanup (#397) 2026-05-08 21:19:09 -07:00
contexts feat: implement middleware and context provider for Express integration 2025-10-11 20:56:00 -07:00
hooks Add Brackt as a league-private meta-sport (#200) (#377) 2026-05-04 20:31:44 -07:00
lib Add branded dark-themed HTML email template 2026-05-10 11:12:48 -07:00
models Harden sport icon cleanup (#397) 2026-05-08 21:19:09 -07:00
routes Add branded dark-themed HTML email template 2026-05-10 11:12:48 -07:00
services Fix college hockey bracket resolution (#396) 2026-05-08 12:29:39 -07:00
test Remove first and last name from user profiles (#399) 2026-05-09 09:18:50 -07:00
types Redesign standings page with sortable table, 7-day change, and chart repositioned (#205) 2026-03-22 11:05:13 -07:00
utils Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
welcome Redesign to dark-mode-only with navy palette and accent colors (#13) 2026-02-20 19:26:11 -08:00
app.css Add email verification for email/password signups (#400) 2026-05-09 23:58:45 -07:00
entry.client.tsx Filter unnecessary sentry css and js errors. 2026-03-15 10:24:57 -07:00
entry.server.tsx Replace console.* with structured logger, fix no-inferrable-types (closes #98) (#199) 2026-03-21 13:41:39 -07:00
root.tsx Add Cloudinary-backed avatar system (#385) 2026-05-06 14:47:37 -07:00
routes.ts Add email verification for email/password signups (#400) 2026-05-09 23:58:45 -07:00