An open API service indexing awesome lists of open source software.

https://github.com/bmlt-enabled/aggregator

Aggregates the data from all known bmlt servers while acting like a root server itself.
https://github.com/bmlt-enabled/aggregator

Last synced: 4 days ago
JSON representation

Aggregates the data from all known bmlt servers while acting like a root server itself.

Awesome Lists containing this project

README

          

# aggregator

The worldwide BMLT server aggregator (formerly tomato) uses the [BMLT Server](https://github.com/bmlt-enabled/bmlt-server) codebase. This repo contains the terraform for the aggregator infrastructure and the worldwide servers list [serverList.json](./serverList.json).

## Architecture

```mermaid
graph TB
subgraph "Root Servers Worldwide"
RS1["🌍 Aotearoa NZ
bmlt.nzna.org"]
RS2["🌍 Greater NY
bmlt.newyorkna.org"]
RS3["🌍 40+ other servers
..."]
end

subgraph "AWS Infrastructure"
subgraph "ECS Cluster (EC2: t3a.small x2)"
INIT["⚙️ aggregator-init
(Database Setup)"]
APP1["🚀 aggregator
Task 1
Port 8000"]
APP2["🚀 aggregator
Task 2
Port 8000"]
IMPORT["📥 aggregator-import
(Scheduled: Every 4hrs)"]
end

ALB["⚖️ Application Load Balancer"]
RDS["🗄️ RDS MySQL 8
db.t3.micro
100GB"]
CW["📊 CloudWatch
Logs & Alarms"]
LAMBDA["λ Lambda Monitor
(Task Failures)"]
SNS["📧 SNS Alerts"]
end

subgraph "Public Access"
DNS1["🌐 aggregator.bmltenabled.org"]
end

RS1 -->|"Fetch Meetings"| IMPORT
RS2 -->|"Fetch Meetings"| IMPORT
RS3 -->|"Fetch Meetings"| IMPORT

IMPORT -->|"Store Data"| RDS
INIT -->|"Initialize Schema"| RDS
APP1 -->|"Query"| RDS
APP2 -->|"Query"| RDS

DNS1 --> ALB
ALB -->|"Route Traffic"| APP1
ALB -->|"Route Traffic"| APP2

APP1 -.->|"Logs"| CW
APP2 -.->|"Logs"| CW
IMPORT -.->|"Logs"| CW
INIT -.->|"Logs"| CW

CW -->|"Task Stopped Events"| LAMBDA
CW -->|"Health Alerts"| SNS
LAMBDA --> SNS

style IMPORT fill:#ffb3b3,stroke:#333,stroke-width:2px,color:#000
style APP1 fill:#b3d9ff,stroke:#333,stroke-width:2px,color:#000
style APP2 fill:#b3d9ff,stroke:#333,stroke-width:2px,color:#000
style INIT fill:#ffe6b3,stroke:#333,stroke-width:2px,color:#000
style RDS fill:#b3ffb3,stroke:#333,stroke-width:2px,color:#000
```