.
├── assets <- images
├── client <- client code
│ ├── main.py
│ ├── Pipfile
│ ├── Pipfile.lock
│ └── sounds <- sounds folder
│ ├── mario
│ └── orc
├── README.md <- this file
└── server <- server side components
├── main.yaml < server side cloudformation template
├── Pipfile
├── Pipfile.lock
└── src <- server side code
├── config.py
├── main_forwarder.py
├── main_webhook.py
└── main_websocket.py
There's 2 API Gateway
This is where client made websocket connection to. All websocket events are handled by the websocket lambda
This is meant receive webhook calls from the internet. It's handled by the webhook lambda
This lambda handles all the websocket activities and store connected client-id in DynamoDB
This lambda received the webhook calls and send the payload to each connected client via API Gateway
This lambda is used to forward events from another AWS account to the webhook lambda
Client side consist of a simple websocket client which receive event payload from the server side and plays sound according to the content