A3EA

(Andy's) 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 allows users to view events and filter them by date, category, and keywords.

There is also an admin section that will eventually contain some 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, like identity and access management,
hosting/backups/logging/redundancy/analyitics/budgeting/cost management/
Application Load Balancer Amazon Route 53 to register and setup the 'A2EA/A3EA' domain names
Application Load Balancer to handle traffic
Amazon CloudWatch to monitor and log everything
Parameter store for confirmation values
IE. all the convenient stuff you get when using AWS as the cloud hosting provider.

In the future (not implemented yet

-Amazon SES to register business email addresses
-AWS Certificate Manager (ACM) (for certificate management)
-user management with AWS Cognito, used for authentication and a notification engine to
send weekly emails with your configured event search.. things like this will be possible.. eventually.