update readme and toml

This commit is contained in:
Bevan Hunt 2019-12-31 18:28:56 -08:00
parent 9c81312afa
commit 6c7c3aa1e9
3 changed files with 27 additions and 10 deletions

2
Cargo.lock generated
View File

@ -343,7 +343,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "biller"
version = "0.1.0"
version = "0.1.1"
dependencies = [
"actix-cors 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"actix-rt 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",

View File

@ -1,11 +1,11 @@
[package]
name = "biller"
version = "0.1.0"
version = "0.1.1"
authors = ["Bevan Hunt <bevan@bevanhunt.com>"]
edition = "2018"
license = "MIT"
keywords = ["sse", "message-bus", "front-end", "api"]
description = "Front-end Message Bus using SSE"
keywords = ["sse", "message-bus", "front-end", "api", "real-time"]
description = "Front-end Real-time Message Bus"
repository = "https://github.com/apibillme/biller"
readme = "README.md"

View File

@ -1,8 +1,24 @@
# Biller - Front-end Message Bus using SSE
## Biller - Front-end Real-time Message Bus
[![crates.io](https://meritbadge.herokuapp.com/biller](https://crates.io/crates/biller)
[![crates.io](https://meritbadge.herokuapp.com/biller)](https://crates.io/crates/biller)
## Use
### Purpose
```text
The purpose of this library is to provide a real-time front-end message bus using SSE and a JSON API.
Biller is born from the need that rather than building a complex REST API with web-sockets to provide reactive web forms there is a simpler way.
Biller follows an insert-only/publish/subscribe paradigm rather than a REST CRUD paradigm.
In Biller you insert an event and its data via a JSON POST request (/insert). Biller publishes the latest event to an event stream via SSE (/events) and keeps all older versions in its database that can be viewed in a JSON GET request (/audit/{event}).
When the client first subscribes to the SSE connection (/events) all the latest events and data is sent to the client. Combined with sending the latest event via SSE when subscribed negates any necessity to do any GET API requests in the lifecycle of events.
The side-effect of this system is that the latest event is the schema. Old events are saved in the database and are not changed but the latest event is the schema for the front-end. This is pure NoSQL as the backend is agnostic to the event data.
```
### Use
```rust
use biller::{biller_run};
@ -17,10 +33,11 @@ async fn main() -> std::result::Result<(), std::io::Error> {
- the PORT needs to passed in as an environment variable
## Example
### Example
- run ``` make ``` and ``` make client ``` in two different terminal windows to run example
- ``` make ```
- ``` make client ```
## Example
### Demo
- https://biller-demo.apibill.me