Skip to content

Commit

Permalink
docs: updated readme and rust template
Browse files Browse the repository at this point in the history
  • Loading branch information
jsoverson committed Oct 18, 2023
1 parent cb0790e commit 2713705
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 30 deletions.
66 changes: 38 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
</picture>

<p align="center">
A flow-based runtime for WebAssembly components.
A functional framework for WebAssembly components that run on the server and client.
<br />
<a href="https://candle.dev/docs/"><strong>Explore the docs »</strong></a>
<br />
Expand Down Expand Up @@ -63,30 +63,41 @@
<!-- ABOUT THE PROJECT -->
## About The Project

Wick is a low-code, flow-like runtime for stitching together WebAssembly components into full applications. Built With ❤️, Rust, and Wasm.
Wick is a runtime for running and composing WebAssembly components together as full applications. Wick is built With ❤️, Rust, and Wasm.

<p align="right">(<a href="#readme-top">back to top</a>)</p>

## Why Wick?

## What can you do with Wick?
We built wick because we wanted a secure, fast, functional framework that used WebAssembly as its core component model. We wanted to build applications and libraries that could run on the server, client, and everywhere else. We needed it to be async first, streaming, and not rely on external systems. Suprisingly, nothing like this existed, so we built it.

Wick revolves around components. Components are essentially libraries that export operations, or functions.
## Who should use Wick?

<img src="docs/static/images/gifs/wick-new-component.gif"/>
If you:

Every wick component acts on streams. You can invoke components directly from the command line or combine them to build CLI tools, web applications, or even other components.
- Like functional programming ideas.
- Want to write code once and use it the same way everywhere.
- Like security baked into your applications.
- Have built enough software to recognize everyone is solving the same problems.
- Play on the bleeding edge of technology.

<img src="docs/static/images/gifs/wick-invoke.gif"/>
Then Wick is for you.

We built wick to reduce all the wasted effort in building software. When all pieces of software connect the same way, we can build single tools that work for *everything*.
## Demos/Examples

Like a test runner that can test anything via configuration alone:
Online demos of Wick in action:

<img src="docs/static/images/gifs/wick-test.gif"/>
- [Text generation](https://wasm.candle.dev/llama2)
- [Text redaction](https://wasm.candle.dev/redact)
- [Object detection](https://wasm.candle.dev/yolo)

Or the ability to audit every resource your application uses *and* validate it in one fell swoop.
Public repository of component examples:

<img src="docs/static/images/gifs/wick-config-lockdown.gif"/>
- [Wick Components](https://github.com/candlecorp/wick-components/tree/main/components)

Wick's example directory:

- [Wick examples](https://github.com/candlecorp/wick/tree/main/examples)

<!-- GETTING STARTED -->
## Getting Started
Expand Down Expand Up @@ -147,32 +158,31 @@ just install # or cargo install --path .
<!-- USAGE EXAMPLES -->
## Usage

We're constantly adding examples to the [./examples](https://github.com/candlecorp/wick/tree/main/examples) directory, which we also use as a base for our integration tests.

_For more information, please refer to the [Documentation](https://candle.dev/docs/)_
Wick's original WebAssembly component protocol uses RSocket to support complex, rich streams in WebAssembly.

<p align="right">(<a href="#readme-top">back to top</a>)</p>
*Wick supports varying degrees of the standard WebAssembly component model and will continue to support more as the specification stabilizes.*

To build a WebAssembly component

- Clone the template with `cargo generate` (or git clone)
- Build & sign it with `just build`
- Execute your new library component with `wick invoke`

<!-- ROADMAP -->
## Roadmap
```
$ cargo generate candlecorp/wick templates/rust --name my-project
$ cd my-project
$ just build
$ wick invoke component.wick greet -- --input="$USER"
{"payload":{"value":"Hello, jsoverson"},"port":"output"}
```

- [X] HTTP Trigger
- [X] Cron Trigger
- [X] CLI Trigger
- [X] Expand automatic API generation
- [X] audit/lockdown support
- [ ] WebAssembly Component-model support
- [ ] WebSocket support
- [ ] WebTransport as support improves
We're constantly adding examples to the [./examples](https://github.com/candlecorp/wick/tree/main/examples) directory, which we also use as a base for our integration tests.

See the [open issues](https://github.com/candlecorp/wick/issues) for a full list of proposed features (and known issues).
_For more information, please refer to the [Documentation](https://candle.dev/docs/)_

<p align="right">(<a href="#readme-top">back to top</a>)</p>



<!-- CONTRIBUTING -->
## Contributing

Expand Down
4 changes: 2 additions & 2 deletions templates/rust/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ panic = "abort"
crate-type = ["cdylib"]

[dependencies]
wick-component = { git = "https://github.com/candlecorp/wick.git" }
wick-component = { version = "0.17.0" }
serde = { version = "1", features = ["derive"] }
async-trait = "0.1"
anyhow = { version = "1" }

[build-dependencies]
wick-component-codegen = { git = "https://github.com/candlecorp/wick.git" }
wick-component-codegen = { version = "0.6.0" }

# Including this section keeps this crate out of a workspace without needing to alter the workspace.
[workspace]

0 comments on commit 2713705

Please sign in to comment.