Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions backend/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,16 @@ BOXING_API_URL=https://api.example-boxing-data.com/v1

# ── Sentry ────────────────────────────────────────────────────
SENTRY_DSN=

# ── Email ─────────────────────────────────────────────────────
# Provider: smtp | sendgrid
EMAIL_PROVIDER=smtp
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=you@example.com
SMTP_PASS=your-smtp-password
SMTP_FROM=no-reply@boxmeout.app
# Required when EMAIL_PROVIDER=sendgrid
SENDGRID_API_KEY=SG.xxxx
APP_NAME=BoxMeOut
APP_BASE_URL=http://localhost:3001
17 changes: 17 additions & 0 deletions backend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

43 changes: 43 additions & 0 deletions backend/src/email/templates/dispute_filed.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Dispute filed — {{appName}}</title>
</head>
<body style="margin:0;padding:0;background:#f4f4f5;font-family:Arial,sans-serif;">
<table width="100%" cellpadding="0" cellspacing="0" style="background:#f4f4f5;padding:40px 0;">
<tr>
<td align="center">
<table width="560" cellpadding="0" cellspacing="0" style="background:#ffffff;border-radius:8px;overflow:hidden;">
<tr>
<td style="background:#d97706;padding:24px 32px;">
<span style="color:#ffffff;font-size:20px;font-weight:bold;">{{appName}}</span>
</td>
</tr>
<tr>
<td style="padding:32px;">
<h2 style="margin:0 0 16px;color:#111827;font-size:22px;">Dispute filed</h2>
<p style="margin:0 0 16px;color:#374151;line-height:1.6;">
A dispute has been filed for a market you participated in. Our team will review it shortly.
</p>
<div style="background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:16px;margin:0 0 24px;">
<p style="margin:0 0 8px;font-weight:bold;color:#111827;">{{marketTitle}}</p>
<p style="margin:0;color:#6b7280;font-size:13px;">Dispute ID: <code style="font-family:monospace;">{{disputeId}}</code></p>
</div>
<p style="margin:0;color:#6b7280;font-size:13px;">
You will receive another email once the dispute has been resolved. Log in to {{appName}} to track the status.
</p>
</td>
</tr>
<tr>
<td style="padding:16px 32px;background:#f9fafb;border-top:1px solid #e5e7eb;">
<p style="margin:0;color:#9ca3af;font-size:12px;">— The {{appName}} team</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
45 changes: 45 additions & 0 deletions backend/src/email/templates/dispute_resolved.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Dispute resolved — {{appName}}</title>
</head>
<body style="margin:0;padding:0;background:#f4f4f5;font-family:Arial,sans-serif;">
<table width="100%" cellpadding="0" cellspacing="0" style="background:#f4f4f5;padding:40px 0;">
<tr>
<td align="center">
<table width="560" cellpadding="0" cellspacing="0" style="background:#ffffff;border-radius:8px;overflow:hidden;">
<tr>
<td style="background:#4f46e5;padding:24px 32px;">
<span style="color:#ffffff;font-size:20px;font-weight:bold;">{{appName}}</span>
</td>
</tr>
<tr>
<td style="padding:32px;">
<h2 style="margin:0 0 16px;color:#111827;font-size:22px;">Dispute resolved</h2>
<p style="margin:0 0 16px;color:#374151;line-height:1.6;">
The dispute for the following market has been resolved by our team.
</p>
<div style="background:#f3f4f6;border-radius:6px;padding:16px;margin:0 0 24px;">
<p style="margin:0 0 8px;font-weight:bold;color:#111827;">{{marketTitle}}</p>
<p style="margin:0;color:#374151;">
Resolution: <strong>{{resolution}}</strong>
</p>
</div>
<p style="margin:0;color:#6b7280;font-size:13px;">
Log in to {{appName}} to view the full outcome and any updated balances.
</p>
</td>
</tr>
<tr>
<td style="padding:16px 32px;background:#f9fafb;border-top:1px solid #e5e7eb;">
<p style="margin:0;color:#9ca3af;font-size:12px;">— The {{appName}} team</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
45 changes: 45 additions & 0 deletions backend/src/email/templates/market_resolved.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Market resolved — {{appName}}</title>
</head>
<body style="margin:0;padding:0;background:#f4f4f5;font-family:Arial,sans-serif;">
<table width="100%" cellpadding="0" cellspacing="0" style="background:#f4f4f5;padding:40px 0;">
<tr>
<td align="center">
<table width="560" cellpadding="0" cellspacing="0" style="background:#ffffff;border-radius:8px;overflow:hidden;">
<tr>
<td style="background:#4f46e5;padding:24px 32px;">
<span style="color:#ffffff;font-size:20px;font-weight:bold;">{{appName}}</span>
</td>
</tr>
<tr>
<td style="padding:32px;">
<h2 style="margin:0 0 16px;color:#111827;font-size:22px;">Market resolved</h2>
<p style="margin:0 0 16px;color:#374151;line-height:1.6;">
The following market you participated in has been resolved:
</p>
<div style="background:#f3f4f6;border-radius:6px;padding:16px;margin:0 0 24px;">
<p style="margin:0 0 8px;font-weight:bold;color:#111827;">{{marketTitle}}</p>
<p style="margin:0;color:#374151;">
Outcome: <strong style="color:#059669;">{{outcome}}</strong>
</p>
</div>
<p style="margin:0;color:#6b7280;font-size:13px;">
Log in to {{appName}} to view your position and check for any winnings.
</p>
</td>
</tr>
<tr>
<td style="padding:16px 32px;background:#f9fafb;border-top:1px solid #e5e7eb;">
<p style="margin:0;color:#9ca3af;font-size:12px;">— The {{appName}} team</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
45 changes: 45 additions & 0 deletions backend/src/email/templates/reset_password.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Reset your password — {{appName}}</title>
</head>
<body style="margin:0;padding:0;background:#f4f4f5;font-family:Arial,sans-serif;">
<table width="100%" cellpadding="0" cellspacing="0" style="background:#f4f4f5;padding:40px 0;">
<tr>
<td align="center">
<table width="560" cellpadding="0" cellspacing="0" style="background:#ffffff;border-radius:8px;overflow:hidden;">
<tr>
<td style="background:#4f46e5;padding:24px 32px;">
<span style="color:#ffffff;font-size:20px;font-weight:bold;">{{appName}}</span>
</td>
</tr>
<tr>
<td style="padding:32px;">
<h2 style="margin:0 0 16px;color:#111827;font-size:22px;">Reset your password</h2>
<p style="margin:0 0 24px;color:#374151;line-height:1.6;">
We received a request to reset your {{appName}} password. Click the button below to choose a new one.
</p>
<a href="{{resetUrl}}" style="display:inline-block;padding:12px 24px;background:#4f46e5;color:#ffffff;border-radius:6px;text-decoration:none;font-weight:bold;">
Reset my password
</a>
<p style="margin:24px 0 0;color:#6b7280;font-size:13px;">
<strong>This link expires in 15 minutes.</strong> If you did not request a password reset, you can safely ignore this email — your password will not change.
</p>
<p style="margin:8px 0 0;color:#9ca3af;font-size:12px;word-break:break-all;">
Or copy this link: {{resetUrl}}
</p>
</td>
</tr>
<tr>
<td style="padding:16px 32px;background:#f9fafb;border-top:1px solid #e5e7eb;">
<p style="margin:0;color:#9ca3af;font-size:12px;">— The {{appName}} team</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
45 changes: 45 additions & 0 deletions backend/src/email/templates/verify_email.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Verify your email — {{appName}}</title>
</head>
<body style="margin:0;padding:0;background:#f4f4f5;font-family:Arial,sans-serif;">
<table width="100%" cellpadding="0" cellspacing="0" style="background:#f4f4f5;padding:40px 0;">
<tr>
<td align="center">
<table width="560" cellpadding="0" cellspacing="0" style="background:#ffffff;border-radius:8px;overflow:hidden;">
<tr>
<td style="background:#4f46e5;padding:24px 32px;">
<span style="color:#ffffff;font-size:20px;font-weight:bold;">{{appName}}</span>
</td>
</tr>
<tr>
<td style="padding:32px;">
<h2 style="margin:0 0 16px;color:#111827;font-size:22px;">Verify your email address</h2>
<p style="margin:0 0 24px;color:#374151;line-height:1.6;">
Thanks for signing up. Click the button below to confirm your email address and activate your account.
</p>
<a href="{{verifyUrl}}" style="display:inline-block;padding:12px 24px;background:#4f46e5;color:#ffffff;border-radius:6px;text-decoration:none;font-weight:bold;">
Verify email address
</a>
<p style="margin:24px 0 0;color:#6b7280;font-size:13px;">
This link expires in 24 hours. If you did not create an account, you can safely ignore this email.
</p>
<p style="margin:8px 0 0;color:#9ca3af;font-size:12px;word-break:break-all;">
Or copy this link: {{verifyUrl}}
</p>
</td>
</tr>
<tr>
<td style="padding:16px 32px;background:#f9fafb;border-top:1px solid #e5e7eb;">
<p style="margin:0;color:#9ca3af;font-size:12px;">— The {{appName}} team</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
Loading
Loading