Skip to content

Serverless app to send automated confirmation messages upon registering through contact forms.

License

Notifications You must be signed in to change notification settings

SourasishBasu/Registration-Validator-SMS-AWS

Repository files navigation

Next.js 13 and Express.JS

An open-source web-form app built with Next.js
Express.js and AWS for the REST API and NoSQL database.
Sends SMS to the phone number used for registering

Features · Running locally · Overview · API Routing · AWS Configuration · Authors

Features

Tech Stack

Node.js Express.js TypeScript React.js Next.js Amplify API Gateway DynamoDB Lambda Eventbridge SNS

Overview

AWS Architecture

A static site is hosted with a contact form. We use API Gateway to create an API which makes a PUT request to our DynamoDB database after the user clicks Register on the form.

The API sends user records to DynamoDB which then pushes the record into the DynamoDB Data Stream.

EventBrige Pipeline is configured to use DynamoDB Data Streams as the Event Source, Filter for INSERT records in the stream to pick up only new entries. The record data is then pushed to the target Lambda function.

Lambda performs the processing on the input JSON data using Python to parse the user data and extract the Phone Number, name and other relevant details to send to SNS.

Simple Notification Service publishes a formatted string with user details as an SMS to the provided number, confirming their registration.

Running locally

First, run the development server:

npm install
npm run dev

Your app template should now be running on localhost:3000

Warning

This command only starts the webapp. You will need to configure the other services on AWS to get the full functionality.

API Routing

The REST API is hosted on AWS using a Lambda function which deploys a Serverless Express.js app. Source code for lambda function is in the amplify/backend/function/formfunction/src/app.js

Important

The app template which is running on localhost:3000 is using the REST API hosted on AWS. It has CORS enabled which means your app template will not be able make requests to the REST API hosted on AWS.

Note

To learn more about the Serverless Express.js app and how to deploy it, visit the amplify/README.md

AWS Configuration for SNS

AWS Serverless infrastructure is used to send users instantaneous confirmation messages via SMS upon registering for an event on a website contact form.

This infrastructure relies on Eventbridge and Lambda for functionality. Eventbridge creates a pipeline which listens for a new stream to the DynamoDB table.

The Lambda function for processing the input JSON data uses Python to parse the data and send it to SNS.

Note

To learn more about the Eventbridge & Lambda function and how to deploy it, visit the lambda-sns/README.md

Authors

This project is created by MLSA KIIT team members:

Version

Version Date Comments
1.0 Nov 21th, 2023 Initial release

Future Roadmap

Website/API

  • Authentication and Authorization using API Keys
  • HTTPS Validation
  • Input Validation and Sanitization on server side
  • Better Error Handling

AWS Infrastructure

  • Actual implementation in production
  • Email functionality along with SMS
  • SNS Topic so that other notifications can be published to the same numbers

Usage


Registration Form template



DynamoDB Table with valid entries



SMS Example for a valid Registration