feat: add sponsor-outreach MJML email template (#320) #326

Open
forgejo_admin wants to merge 1 commit from 320-mjml-sponsor-outreach-template into main

Summary

Adds an MJML source template and compiled HTML for sponsor outreach emails. Matches the existing Westside brand language (dark theme, red left-border cards, red accent bar, headline underline, footer red top-border).

Changes

  • email-templates/src/sponsor-outreach.mjml — MJML source with Westside brand styling
  • email-templates/compiled/sponsor-outreach.html — compiled HTML ready for load_email_template("sponsor-outreach", data)

Template Placeholders

Key Purpose
{{business_name}} Sponsor business name in greeting
{{pitch}} Custom pitch paragraph
{{sender_name}} Sender name in intro + closing signature
{{sender_phone}} Sender phone in closing signature
{{sponsorship_tiers}} Optional formatted tiers block (invisible when empty)

Test Plan

  • Verify compiled HTML renders correctly in email client preview
  • Confirm all 5 placeholders survive compilation and are present in compiled output
  • Test with {{sponsorship_tiers}} as empty string to verify it renders invisibly
  • Test load_email_template("sponsor-outreach", data) substitution via existing email service

Review Checklist

  • MJML compiles without errors
  • All 5 placeholders present in compiled HTML
  • Brand colors match existing templates (#d42026 red, #0a0a0a black, #141414 dark, #f0f0f0 text)
  • Red left-border card pattern matches announcement.html
  • Footer red top-border pattern matches existing templates
  • Compiled HTML copied to ~/westside-email-templates/compiled/

None.

Closes #320

## Summary Adds an MJML source template and compiled HTML for sponsor outreach emails. Matches the existing Westside brand language (dark theme, red left-border cards, red accent bar, headline underline, footer red top-border). ## Changes - `email-templates/src/sponsor-outreach.mjml` — MJML source with Westside brand styling - `email-templates/compiled/sponsor-outreach.html` — compiled HTML ready for `load_email_template("sponsor-outreach", data)` ## Template Placeholders | Key | Purpose | |-----|---------| | `{{business_name}}` | Sponsor business name in greeting | | `{{pitch}}` | Custom pitch paragraph | | `{{sender_name}}` | Sender name in intro + closing signature | | `{{sender_phone}}` | Sender phone in closing signature | | `{{sponsorship_tiers}}` | Optional formatted tiers block (invisible when empty) | ## Test Plan - Verify compiled HTML renders correctly in email client preview - Confirm all 5 placeholders survive compilation and are present in compiled output - Test with `{{sponsorship_tiers}}` as empty string to verify it renders invisibly - Test `load_email_template("sponsor-outreach", data)` substitution via existing email service ## Review Checklist - [x] MJML compiles without errors - [x] All 5 placeholders present in compiled HTML - [x] Brand colors match existing templates (#d42026 red, #0a0a0a black, #141414 dark, #f0f0f0 text) - [x] Red left-border card pattern matches announcement.html - [x] Footer red top-border pattern matches existing templates - [x] Compiled HTML copied to ~/westside-email-templates/compiled/ ## Related Notes None. ## Related Closes #320
feat: add sponsor-outreach MJML email template (#320)
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
c8916cb43b
MJML source and compiled HTML for sponsor outreach emails.
Uses Westside brand (red left-border cards, red accent, dark theme)
with {{business_name}}, {{pitch}}, {{sender_name}}, {{sender_phone}},
and optional {{sponsorship_tiers}} placeholders.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
Owner

QA Review

Scope: MJML source + compiled HTML for sponsor-outreach email template.

Checklist

  • MJML compiles without errors (471-line HTML output, 27KB)
  • All 5 placeholders ({{business_name}}, {{pitch}}, {{sender_name}}, {{sender_phone}}, {{sponsorship_tiers}}) present in compiled HTML
  • Placeholder format matches load_email_template() simple {{key}} replacement (no Jinja2)
  • Brand tokens match existing templates: #d42026 red, #0a0a0a body, #141414 card bg, #f0f0f0 text, #737373 footer
  • Red left-border card pattern (4px #d42026 column + 536px content column) matches announcement.html
  • Headline red underline CSS class matches existing .headline-underline pattern
  • Footer red top-border CSS class matches existing .footer-border pattern
  • Logo URL matches existing templates (minio-api.tail5b443a.ts.net/assets/westside/branding/logo.jpeg)
  • Font stack matches existing templates (system font stack + Roboto import)
  • {{sponsorship_tiers}} in plain mj-text -- renders as empty whitespace when replaced with empty string

Findings

No issues found. Template follows established brand patterns exactly.

VERDICT: APPROVED

## QA Review **Scope:** MJML source + compiled HTML for sponsor-outreach email template. ### Checklist - [x] MJML compiles without errors (471-line HTML output, 27KB) - [x] All 5 placeholders (`{{business_name}}`, `{{pitch}}`, `{{sender_name}}`, `{{sender_phone}}`, `{{sponsorship_tiers}}`) present in compiled HTML - [x] Placeholder format matches `load_email_template()` simple `{{key}}` replacement (no Jinja2) - [x] Brand tokens match existing templates: `#d42026` red, `#0a0a0a` body, `#141414` card bg, `#f0f0f0` text, `#737373` footer - [x] Red left-border card pattern (4px `#d42026` column + 536px content column) matches announcement.html - [x] Headline red underline CSS class matches existing `.headline-underline` pattern - [x] Footer red top-border CSS class matches existing `.footer-border` pattern - [x] Logo URL matches existing templates (`minio-api.tail5b443a.ts.net/assets/westside/branding/logo.jpeg`) - [x] Font stack matches existing templates (system font stack + Roboto import) - [x] `{{sponsorship_tiers}}` in plain `mj-text` -- renders as empty whitespace when replaced with empty string ### Findings No issues found. Template follows established brand patterns exactly. **VERDICT: APPROVED**
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin 320-mjml-sponsor-outreach-template:320-mjml-sponsor-outreach-template
git switch 320-mjml-sponsor-outreach-template

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff 320-mjml-sponsor-outreach-template
git switch 320-mjml-sponsor-outreach-template
git rebase main
git switch main
git merge --ff-only 320-mjml-sponsor-outreach-template
git switch 320-mjml-sponsor-outreach-template
git rebase main
git switch main
git merge --no-ff 320-mjml-sponsor-outreach-template
git switch main
git merge --squash 320-mjml-sponsor-outreach-template
git switch main
git merge --ff-only 320-mjml-sponsor-outreach-template
git switch main
git merge 320-mjml-sponsor-outreach-template
git push origin main
Sign in to join this conversation.
No description provided.