Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/bancolombia/async-dataflow

Component to deliver asynchronous responses in real time to client applications
https://github.com/bancolombia/async-dataflow

asynchronous-responses elixir open-source realtime websockets

Last synced: 7 days ago
JSON representation

Component to deliver asynchronous responses in real time to client applications

Awesome Lists containing this project

README

        

[![Scorecards supply-chain security](https://github.com/bancolombia/async-dataflow/actions/workflows/scorecards-analysis.yml/badge.svg)](https://github.com/bancolombia/async-dataflow/actions/workflows/scorecards-analysis.yml)

# Async DataFlow

The Async DataFlow component aims to deliver asynchronous responses in real time to client applications, thus enabling end-to-end asynchronois flows without losing the ability to respond in real time or eventually, send data to client applications as a result of asynchronous operations and oriented to `messages / commands / events` on the platform.

## Repository

- [Channel Sender](https://github.com/bancolombia/async-dataflow/tree/master/channel-sender) Distributed Elixir Cluster implementation of real time with websockets and notifications channels.

```mermaid
C4Dynamic
Boundary(aa, "Client side applications") {
Component(cli, "Single Page Application or Mobile App", "Javascript / Angular /Flutter", "")
}

Boundary(xx, "ADF") {
Component(sender, "Channel Sender", "", "")
}

Boundary(zz, "Backend") {
Component(abl, "Async business logic")
}

Rel(cli, sender, "create connection")
Rel(cli, abl, "Call Http or another entry point definition")
Rel(abl, cli, "Return Http Empty response")
Rel(abl, sender, "Send Response (Http)")
Rel(sender, cli, "Send Response (websocket)")

UpdateElementStyle(sender, $fontColor="black", $bgColor="orange", $borderColor="black")

UpdateRelStyle(cli, sender, $offsetX="-40", $offsetY="-20")
UpdateRelStyle(cli, abl, $offsetX="-240", $offsetY="-40")
UpdateRelStyle(abl, cli, $offsetX="30", $offsetY="-40")
UpdateRelStyle(abl, sender, $offsetX="-60", $offsetY="40")
UpdateRelStyle(sender, cli, $offsetX="-40", $offsetY="20")

UpdateLayoutConfig($c4ShapeInRow="2", $c4BoundaryInRow="2")
```

- [Channel Streams](https://github.com/bancolombia/async-dataflow/tree/master/channel-streams) Distributed Elixir Cluster implementation of a async messages router.

```mermaid
C4Dynamic

Boundary(zz, "Backend") {
Component(abl, "Async business logic")
SystemDb(bus, "Event bus")
}

Boundary(xx, "ADF") {
Component(sender, "Channel Sender", "", "")
Component(streams, "Channel Streams", "", "")
}

Boundary(aa, "Client side applications") {
Component(cli, "Single Page Application or Mobile App", "Javascript / Angular /Flutter", "")
}

Rel(abl, bus, "Emit event")
Rel(bus, streams, "Subscribe event")
Rel(streams, sender, "route [Http]")
Rel(sender, cli, "Push response [websocket]")

UpdateElementStyle(sender, $fontColor="black", $bgColor="orange", $borderColor="black")
UpdateElementStyle(streams, $fontColor="black", $bgColor="green", $borderColor="black")

UpdateRelStyle(abl, bus, $offsetX="-40", $offsetY="-40")
UpdateRelStyle(bus, streams, $offsetX="-40", $offsetY="-20")
UpdateRelStyle(streams, sender, $offsetX="-33", $offsetY="-20")
UpdateRelStyle(sender, cli, $offsetX="-40", $offsetY="-10")

UpdateLayoutConfig($c4ShapeInRow="2", $c4BoundaryInRow="1")
```

- [Client JS](https://github.com/bancolombia/async-dataflow/tree/master/clients/client-js) Javascript library for async data flow implementation for browsers.
- [Client Dart](https://github.com/bancolombia/async-dataflow/tree/master/clients/client-dart) Dart library for async data flow implementation for flutter applications.

- [Examples](https://github.com/bancolombia/async-dataflow/tree/master/examples)
The purpose of this project is to help the community to understand more the the async data flow component to implement in full asyncio solutions.

## How can I help?

Review the [issues](https://github.com/bancolombia/async-dataflow/issues). Read [how Contributing](https://github.com/bancolombia/async-dataflow/wiki/Contributing).