Email: Welcome to first practice — all teams, parent-player meeting Tuesday Apr 7 #312
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#312
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
Standalone — season starts Apr 7, all 51 parents need welcome email with schedule and parent-player meeting info.
Repo
forgejo_admin/basketball-apiUser Story
As an admin,
I want to email all parents welcoming them to the season
So that every family knows about the parent-player meeting and their team's practice schedule.
Context
Season starts Tuesday Apr 7 at West High. Parent-player meeting first 10-15 minutes, then practice. 51 unique parents across 7 teams. Email should include the full weekly schedule for their team (queried from practice_schedules table) and the parent-player meeting details.
Email templates in this codebase are MJML-compiled HTML loaded at runtime from
/data/email-templates/viaload_email_template()(defined atemail.py:1107). New templates follow this pipeline: write MJML → compile to HTML → mount into container at/data/email-templates/.Environment
File Targets
Files to create/modify:
src/basketball_api/services/email.py— addsend_welcome_practice_email()function usingload_email_template()or inline HTML following existing patternssrc/basketball_api/routes/admin.py— addPOST /admin/email/welcome-practiceendpoint with optional team/division filter and test_email paramFiles NOT to touch:
src/basketball_api/models.pysrc/basketball_api/routes/schedule.pyAcceptance Criteria
Test Expectations
pytest tests/ -k emailpassespytest tests/Constraints
send_jersey_reminder_emailfor reference)get_gmail_client(tenant, db)load_email_template()from email.py:1107 for template loading, OR inline HTML if simplerChecklist
Related
westside-basketball— project this affectsbasketball-api#279— practice schedule data seedingScope Review: NEEDS_REFINEMENT
Review note:
review-763-2026-04-03One file target is incorrect and an architecture note is missing.
src/basketball_api/templates/does not exist. Email templates are MJML-compiled HTML loaded from/data/email-templates/at runtime viaload_email_template(). Fix the file target to reference the email build pipeline (Dockerfile) instead.arch-basketball-apidoes not exist in pal-e-docs. Cross-cutting gap affecting all basketball-api tickets.Scope refinement (review-763-2026-04-03):
src/basketball_api/templates/. Corrected to document the actual pipeline: MJML-compiled HTML loaded viaload_email_template()atemail.py:1107, mounted at/data/email-templates/. File Targets and Constraints updated.Scope Review: APPROVED
Review note:
review-763-2026-04-03-v2Re-review after refinement. Both previous issues resolved: template path corrected to document
load_email_template()pipeline, arch note gap acknowledged as non-blocking backlog item. All file targets verified, traceability complete, 5 testable AC, single-repo scope. Ready for execution.