Technology Overview
The Mental Health Foundation website is an Umbraco CMS v13 platform running on .NET 8 and hosted on Azure. The architecture follows a server-rendered model using Razor views with the uSkinned Site Builder theme framework, backed by Azure SQL Database for content storage and Azure Blob Storage with CDN for media delivery. Integrations with Salesforce Marketing Cloud (SFMC), Foxy.io e-commerce, and Google Analytics 4 extend the platform with personalisation, online ordering, and analytics capabilities.
Technology Stack
Core technology layers and the rationale for each choice.
Integration Architecture
How the platform integrates with external services and orchestrates data flow across personalisation, e-commerce, analytics, and fulfilment.
- Persona segment evaluation
- JavaScript beacon tracking
- Real-time audience detection
- GA4 (gtag.js tracking)
- Looker Studio dashboards
- Google Maps API
- Razor / uSkinned frontend
- .NET 8 API layer
- Azure SQL Database
- Azure Blob Storage + CDN
- Cart, checkout & payments
- Customer & order management
- Transaction webhooks
- Public visitors (personalised content)
- School, Workplace & Professional members
- Backoffice content editors
Security Architecture
Authentication, data protection, application hardening, and integration security measures across the platform.
-
Umbraco Members Authentication — ASP.NET Core Identity with email confirmation, role-based access (Schools, Workplaces, Professionals), and PBKDF2 password hashing
-
Foxy SSO Integration — SHA1-based checkout SSO with 90-second token TTL and JWT-based customer portal authentication via super password
-
HTTPS Enforcement — TLS encryption on all transport; secure cookies (SameSite: Lax, Secure: true) for persona and session data
-
Webhook HMAC Validation — Foxy transaction webhooks validated with HMAC-SHA256 signatures; 401 returned on invalid signatures
-
Secrets Management — Azure Key Vault for production; .NET User Secrets for local development. API keys, connection strings, and SSO secrets never committed to source
-
Rate Limiting — IP+email based throttling: 5 registration attempts per 10 minutes; 10 login attempts per 5 minutes. Returns 429 when exceeded
-
Input Validation & XSS Prevention — ASP.NET Core model validation, email domain verification (.school.nz for Schools), CAPTCHA (hCaptcha/reCAPTCHA), Razor auto-encoding, and TinyMCE sanitisation
-
User Enumeration Prevention — Generic error messages on login failure and registration; no user information exposed in confirmation URLs
Performance Targets
Key non-functional requirements defining expected performance, throughput, and availability benchmarks.
| Metric | Target | Priority | Rationale |
|---|---|---|---|
| Personalisation overhead | < 100ms | Must Have | SFMC beacon must not impact page load (LCP/FCP unaffected) |
| SFMC API response | < 2,000ms (p95) | Must Have | Persona retrieval timeout; graceful fallback after 2 seconds |
| Login completion | < 2 seconds | Should Have | Including Foxy customer sync and SSO token generation |
| Foxy SSO redirect | < 1 second | Should Have | Seamless checkout experience without noticeable delay |
| Webhook processing | < 5 seconds | Should Have | Foxy transaction webhooks must respond within 30s external timeout |
| Concurrent webhooks | 10 / second | Should Have | Handle campaign peaks (PSD: 1,000–2,000 orders/day) |
| Platform availability | 99.9% uptime | Should Have | Authentication, components, and webhook endpoints |
Planned Enhancements
Architecture extensions planned for future phases to improve security posture, performance, and operational capabilities.
Upcoming Platform Improvements
These enhancements will extend the current architecture with additional security headers, caching strategies, automated integrations, and monitoring capabilities as the platform matures.
-
CSP & HSTS Headers
Content Security Policy and HTTP Strict Transport Security for enhanced browser-level protection -
Output Caching
Server-side response caching to reduce database load and improve page load times -
Bundle Stock Sync (F-09)
Automated bundle-to-component inventory synchronisation via Foxy webhooks and hAPI -
Automated Looker Studio Refresh
Replace manual CSV imports with scheduled data pipeline for real-time BI dashboards