From c662d657995223ee4d806c7426115e04b53460dd Mon Sep 17 00:00:00 2001 From: kjuulh Date: Sat, 23 Sep 2023 11:37:28 +0200 Subject: [PATCH] docs: added features section to the readme Signed-off-by: kjuulh --- README.md | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ca00c46..d406ebd 100644 --- a/README.md +++ b/README.md @@ -46,11 +46,11 @@ Bootstrap the file using `crunch init`, see [crunch cli](crates/crunch-cli) for ```toml [service] +service = "users-creation" +domain = "users" codegen = ["rust"] [[publish]] -service = "users-creation" -domain = "users" path = "crates/users-service/crunch" [[subscription]] @@ -66,7 +66,7 @@ See [docs](docs/index.md) for more information (TBA) When crunch is used in services it needs some supportive tooling, it isn't a requirement, but it helps ease development when using them. -- [ ] [Cli](crates/crunch-cli) +- [ ] [Cli](crates/crunch-cli) Used to generate code, add subscriptions, publish event schema, bump versions and more - [ ] [Codegen](crates/crunch-codegen) Can be used to automatically generate rust code depending on your crunch.toml file ## Extensions @@ -77,3 +77,24 @@ At its heart crunch is just a opinionated transport protocol, as such additional - [ ] [Eventsource](crates/crunch-eventsource) Allows proper eventsourcing for the application, check the readme for more info - [ ] [Cuddle](crates/crunch-cuddle) Will read overlapping values from .cuddle.yaml, as such we don't have to define service, domain multiple times, this also allows inheritance for certain fields. +## Features + +Crunch will is configurable to a variety of different transports, persistence layers and more. We recommend a few of them, which crunch automatically ships with (opt out via. `default-features = false` in Cargo.toml) + +See the docs for each of them, to see how they can be enabled, and how to setup settings for them. If using `crunch-cuddle`, these settings can be inherited from a `cuddle-component` + +We recommend wrapping and exposing the parts you need to the library, so that your services uses a consistent and opinionated layer on top of crunch. + +### Transport + +You will need a transport of some sort. Transport is what transfers messages between services, crunch is built to be configurable, and unopinionated, as such most messaging protocols should work fine. + +- [ ] [NATS (recommended)](crates/crunch-transport-nats) +- [ ] [Tokio channel (used for in-memory processing)](crates/crunch-transport-tokio-channel) + +### Persistence + +Crunch will need a persistence layer, like the other components these can be swapped in + +- [ ] [PostgreSQL (recommended)](crates/crunch-postgres) +- [x] [In memory (used for in-memory processing)](crates/crunch-in-memory)