A serverless backend for processing and storing website contact form submissions using Azure Functions and Azure Table Storage.
Features
Serverless Architecture
- Azure Functions - Serverless HTTP API for processing contact form submissions
- Event-Driven Processing - Processes requests without managing application servers
- Scalable Architecture - Automatically handles varying request volumes
- Cost-Efficient Infrastructure - Uses serverless resources to minimize infrastructure overhead
- Stateless Processing - Keeps application logic independent from persistent storage
Contact Form Processing
- HTTP API - Accepts contact form submissions through a REST endpoint
- Request Validation - Validates incoming contact information before storage
- CORS Support - Enables secure communication between the frontend and backend
- Error Handling - Returns appropriate responses for invalid or failed requests
- Structured Data Processing - Converts submitted information into a consistent storage format
Azure Table Storage
- NoSQL Storage - Stores contact submissions using Azure Table Storage
- Partition-Based Organization - Organizes records using partition keys
- Unique Record Identification - Assigns unique row keys to individual submissions
- Persistent Storage - Maintains contact information independently from the Function App
- Scalable Storage - Supports growing amounts of contact data without managing database infrastructure
Infrastructure as Code
- Bicep Templates - Defines Azure infrastructure using declarative templates
- Automated Provisioning - Creates required Azure resources consistently
- Environment Configuration - Centralizes deployment configuration and resource settings
- Repeatable Deployment - Allows the infrastructure to be recreated across environments
- Infrastructure Documentation - Keeps the Azure architecture and configuration version-controlled
Deployment & Operations
- Azure CLI Deployment - Automates resource provisioning and application deployment
- Configuration Management - Uses environment variables and application settings
- Azure Portal Monitoring - Provides visibility into deployed resources
- GitHub Version Control - Maintains application and infrastructure code in source control
- Deployment Documentation - Provides documented setup and deployment procedures
System Architecture

Architecture Overview
The system uses a serverless architecture where Azure Functions acts as the central application layer between the website, contact storage, and communication services. Azure Table Storage provides persistent storage for contact submissions, while Azure Communication Services handles visitor confirmations and administrator notifications. An Azure Static Web App hosts the administration dashboard, and Application Insights provides monitoring and telemetry for the Azure Function. Azure Portal is used to manage and configure the deployed Azure resources.
System Flow
A website visitor fills out and submits the contact form.
The web form sends the submitted information to the Azure Function through a POST request to the /api/contact endpoint.
The HTTP-triggered Azure Function receives, validates, and processes the contact submission.
The processed contact information is stored as a contact entity in Azure Table Storage.
Azure Communication Services sends a confirmation email to the website visitor after the submission is successfully processed.
Azure Communication Services also provides notifications to administrators when new contact submissions are received.
Administrators access the Azure Static Web App dashboard to search, filter, and export contact records stored in Azure Table Storage.
Application Insights collects telemetry, logs, and errors from the Azure Function for monitoring and troubleshooting.
Azure Portal provides management and configuration of the deployed Azure resources.
Highlights

Built with ❤️ by Earl Francis!