Refine MJML email templates to match westside-landing visual language #303
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/basketball-api#303
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Feature
Lineage
Discovered during contract reminder email test (2026-04-03). MJML templates use correct hex values but miss the visual personality of the landing site.
Repo
forgejo_admin/basketball-apiUser Story
As a parent,
I want emails that look like they come from the same brand as the website,
So that communications feel professional and cohesive.
Context
The MJML email templates (action, notification, announcement) use the correct brand colors (#d42026, #0a0a0a, #141414) but don't carry over the design language from
~/west-side-basketball/css/style.css. The landing site has sharp visual elements that make it feel like a sports brand. The emails feel like generic dark-theme templates.Reference:
~/west-side-basketball/css/style.css— the canonical source of Westside visual identity.What needs to change in
templates/email/brand.mjmland the three layouts:Red left-border on content sections — landing uses
.card { border-left: 3px solid #d42026 }. Apply to the main body section in all layouts usingborder-left="3px solid #d42026"on<mj-section>or<mj-column>.Headline red underline accent — landing uses
h2::after { width: 60px; height: 3px; background: #d42026 }. Add a small<mj-divider>(60px wide, 3px, red) after the headline text in all layouts.Tighter button styling — landing uses
border-radius: 4px,font-weight: 800,text-transform: uppercase,letter-spacing: 0.05em, compact padding. The MJML button defaults are rounder and more padded. Update<mj-button>in brand.mjml to:border-radius="4px"(already set),border="2px solid transparent", tighterinner-padding="12px 28px".Footer red top-border — landing uses
.site-footer { border-top: 2px solid #d42026 }. Add red divider before footer section in all layouts.Headline typography — landing headings use
font-weight: 800,text-transform: uppercase,letter-spacing: -0.02em. Apply to headline<mj-text>in all layouts.File Targets
Files to modify:
templates/email/includes/brand.mjml— update<mj-button>attributes, add section defaultstemplates/email/action.mjml— add left-border, headline underline, footer bordertemplates/email/notification.mjml— same patterntemplates/email/announcement.mjml— same patternFiles NOT to touch:
templates/email/jersey-reminder.mjml— has its own specific design, don't break itsrc/— no Python changesAcceptance Criteria
Test Expectations
npm run build:emailcompiles without errorspytest tests/test_jersey_reminder.py -vConstraints
<td>reliably. Use a narrow<mj-column>with red background as a visual left-border (common MJML pattern)Checklist
Related
arch-email— email architectureproject-westside-basketball— parent project