A2EA
Ann Arbor Event Aggregator
About Section For Nerds:
Here I will go into the specifics about how the website works and the technologies that were used.
--WEB Front End---
The front end of this application was written using Visual Studio, C#, and NET 8.0.
It uses the MVC design pattern.
It is hosted in the cloud using AWS.
The web application is containerized using Docker and deployed to AWS ECS Fargate.
The front end kept simple and clean as possible, written in Razor, HTML, CSS, and JavaScript.
Hosted both http and https but http redirects to https, and system uses https terminiation at loadbalancer level.
The front end allows users to view events and filter them by date, category, and keywords.
Notifications set up with AWS SMS/SES
User Management in Aws Cognito, allows signing up for accounts, verifying emails/phone, pw resets, group based Authorization.
Admin section contains debugging and configuration tools.
--Middle Tier--
Behind the scenes, there are a number of AWS Lambda functions that run on specific schedules.
They each go out to the web and scrape data from a single source, putting the data into the system.
Each scraper is custom written depending on the data source.
typically driven with custom code, regular expressions,
and will occasionally be leveraging AI as a redundant layer for robustness/consistancy,
used to sometimes retry failed scrapes/parsing or used in problematic sections with inconsistant data formats.
--Back End--
The database used is MongoDB's DocumentDB, hosted in AWS.
The data from the scrapers, configurations, anything non-sensitive is stored there.
Anything sensitive is encrypted and contained in the AWS Parameter store. I chose that over AWS Secrets Manager for cost reasons.
I chose DocumentDB for simplicity and learning reasons, as I wanted to try using a serverless non-relational database.
The data is stored in documents, and each document represents a single day, containing all the events for that day.
This will make it fast to pull up all events by day, but may pose some problems later for searching.
I may change this later.
AWS handles many things,
hosting/backups/logging/redundancy/analyitics/budgeting/cost management/
Amazon Route 53 to register and setup the 'A2EA/A3EA' domain names,
Application Load Balancer to handle uptime/redundancy over availability zones and http/https routing
Amazon CloudWatch to monitor and log everything
Parameter store for confirmation values
Aws Cognito for user management.
Amazon SES to register A2ea email addresses