A2EventSearchTest

Nerding out! (If you have questions, just ask.)

Overview

This page goes into some of the technical details about how the site works and the technologies used. It's intended for folks who enjoy the implementation details. The public-facing site lets anyone view and filter events by date, category, and keywords. Logged-in users get access to advanced search and account features.

Functionality

  • Public event browsing with filters for date, category, and keyword.
  • Advanced search (requires login): search on more variables, category, data source, price, and supports keyword formula searches.
  • Account area (work in progress): will support managing notifications and preferences.
  • Admin area: System monitoring, scraper statuses, site-wide notifications and event management tools.

Tech stack

The site is built with modern web technologies centered on ASP.NET Core and Razor views. Key points:

  • Backend: .NET 8, written in C# using the MVC/Razor pattern.
  • Frontend: Razor, HTML, CSS, JavaScript (some jQuery + Bootstrap where useful).
  • Containerization & hosting: Docker images deployed to AWS ECS Fargate.
  • Services: AWS Lambda for scheduled scraper jobs, MongoDB (DocumentDB) for data storage.
  • Authentication: AWS Cognito (user signup, verification, password resets, group-based authorization).
  • Notifications: AWS SES and SMS for email and text notifications.

Architecture details

Middle tier / Scrapers

Scheduled AWS Lambda functions drive functions that gather event data. Each lambda function targets a single source and writes results into DocumentDB. Lambda function are custom per source and may use regular expressions, bespoke parsing logic, and occasionally AI-based retries or parsing helpers to improve robustness.

Data model

Data is stored in DocumentDB with one document per day containing that day's events. This design optimizes reads by day but may require changes later for very large-scale searching or analytics.

Caching & performance

The site uses a combination of local session state and server-side caching to improve performance. For caching details see the Caching page.

Cookies & Privacy

The site stores a small number of cookies for expected behavior:

  • Cookie acknowledgement for the cookie policy banner.
  • Persistent state for dismissed site notifications so they stay hidden after you close them.
  • Authentication cookie for logged-in users so sessions persist and expire correctly.

AWS services used

  • RouteĀ 53 (DNS)
  • Elastic Container Service (ECS Fargate) + Application Load Balancer
  • Lambda (scheduled scrapers)
  • DocumentDB (MongoDB compatible)
  • CloudWatch (monitoring & logs)
  • Parameter Store (configuration)
  • Cognito (authentication & user management)
  • SES / WorkMail (email)