ADR-002: resolve form backend as AWS SES via API Gateway + Lambda

This commit is contained in:
Tom Roth
2026-07-31 07:21:33 +02:00
parent 1a6f9fc509
commit 5c3dcab6bf
2 changed files with 12 additions and 12 deletions

View File

@@ -16,17 +16,18 @@ This file records stable architectural decisions and their rationale. Items here
- **Consequences**: - **Consequences**:
- Contact form delivery must be handled via a static-compatible approach (see ADR-002) - Contact form delivery must be handled via a static-compatible approach (see ADR-002)
## ADR-002 — Form backend: existing AWS service ## ADR-002 — Form backend: AWS SES via API Gateway + Lambda
- **Status**: Partially accepted (details pending) - **Status**: Accepted (endpoint details to be confirmed at implementation)
- **Context**: The site must collect quote request form submissions (FR-3, FR-5). The site is static, so a backend service is required. - **Context**: The site must collect quote request form submissions (FR-3, FR-5). The site is static, so a backend service is required.
- **Decision**: Use an **existing AWS service** owned/operated by the stakeholder. - **Decision**: Use **AWS SES (Simple Email Service)** to deliver form submissions to Diana's inbox. The static form will POST to an **AWS API Gateway + Lambda** endpoint (existing infrastructure) that calls SES to send the email.
- **Rationale**: - **Rationale**:
- Reuses existing infrastructure - Reuses existing AWS infrastructure
- Avoids new third-party service dependencies - SES is reliable, cost-effective, and avoids third-party form service dependencies
- **Remaining open items** (blocking `38-lead-capture-spec.md`): - API Gateway + Lambda provides a clean, CORS-friendly endpoint for the static site
- Which AWS service is used (e.g. SES, API Gateway + Lambda)? - **Remaining items** (to confirm before `38-lead-capture-spec.md` implementation):
- What is the form submission endpoint URL? - Endpoint URL for the API Gateway
- What spam protection is in place or expected (e.g. honeypot, reCAPTCHA, AWS WAF)? - Recipient email address configured in SES
- Spam protection approach (e.g. honeypot field, reCAPTCHA, or AWS WAF — to specify in `38-lead-capture-spec.md`)
- **See also**: OQ-3 - **See also**: OQ-3
## ADR-003 — Mobile-first, performance-first design ## ADR-003 — Mobile-first, performance-first design

View File

@@ -11,9 +11,8 @@ This log tracks uncertainties and deferred decisions. Each item should be resolv
- **Resolution**: **No analytics, no tracking scripts, no cookie consent banner** for v1. No privacy policy required at launch. Revisit if analytics are added later. - **Resolution**: **No analytics, no tracking scripts, no cookie consent banner** for v1. No privacy policy required at launch. Revisit if analytics are added later.
## OQ-3 — Form backend + spam protection approach (ADR-002) ## OQ-3 — Form backend + spam protection approach (ADR-002)
- **Status**: Partially resolved - **Status**: Resolved (endpoint details deferred to implementation)
- **Resolution**: Form submissions will be handled via an **existing AWS service**. Specific service (e.g. SES, API Gateway + Lambda, or similar) and the endpoint URL/configuration need to be confirmed before `38-lead-capture-spec.md` implementation. See ADR-002. - **Resolution**: Form submissions will be sent via **AWS SES**, triggered by a POST to an existing **AWS API Gateway + Lambda** endpoint. Recipient email and API endpoint URL to be provided at implementation time. Spam protection approach to be defined in `38-lead-capture-spec.md`. See ADR-002.
- **Remaining**: Confirm which AWS service/endpoint and provide connection details.
## OQ-4 — Minimum quote form fields for "qualified leads" ## OQ-4 — Minimum quote form fields for "qualified leads"
- **Status**: Resolved - **Status**: Resolved