This is a serverless application that processes important events from web and cloud apps and sends them to Microsoft Teams.
The application is written in Typescript and deployed on AWS Lambda. The default url is logs.revolutionuc.com/post
The application uses a microkernel based architecture. This means that for any web or cloud app, there is a service adapter that processes the webhook.
The function uses a query string to determine what adapter to use. For example, if the request was made to logs.revolutionuc.com/post?service=heroku
, the Heroku adapter is used.
Every adapter must implement the Adapter
interface.
The adapters implemented right now are:
- Github
- Netlify
- Heroku
- Travis CI
- Uptime Robot
- Revvit
To display the event on Teams, the application creates Adaptive Cards, a UI format developed by Microsoft and is native to most Microsoft apps.
The details of the card are abstracted into the CardData
interface that service adapters should return.
The CardData
interface needs the following properties:
iconUrl
: URL of the icon image of the service that will be used in the log display. PNG with transparent background recommended.title.text
: Title for the event.title.color
: Color to provide context to the event. Possible values are herefacts
: An array of facts about the event. Each fact has atitle
andvalue
.viewUrl
: Link to get more details about the event. Recommended to go to the web/cloud application that triggered the event.
This is an endpoint to check if the application is up. A get
request to the application url should return a 200 response with polo
in the body.