PRs are always a huge help 💛. Check out issues marked as good first issue or help wanted to get started.
First fork, then clone the repo:
git clone git@github.com:your-username/zebar.git
If not already installed, install Rust and Node.js v20, then run:
# Install pnpm (package manager).
npm i -g pnpm
# Install dependencies.
pnpm i
# Start in development mode.
pnpm dev
After making your changes, push to your fork and submit a pull request. Please try to address only a single feature or fix in the PR so that it's easy to review.
rustup is the de-facto way to set up the Rust toolchain.
Install Node.js via the official download or a version manager like NVM (download - works on Unix and WSL/Git Bash on Windows).
Zebar is split into 2 packages:
desktop
A Tauri desktop application which acts as the backend for spawning and communicating with windows.
client-api
JS package for communicating with the Tauri backend. Published to npm as zebar
.
-
Add the client-side logic for the provider. Most providers aren't client-side heavy, and simply subscribe to some outputs sent from the Tauri backend (eg.
create-ip-provider.ts
).- Add a new provider under
client-api/src/providers/<YOUR_PROVIDER>
. - Modify
create-provider.ts
to add the new provider to theProviderConfigMap
andProviderMap
types, and to create the provider in the switch statement withincreateProvider
. - Export the provider's types from
client-api/src/providers/index.ts
.
- Add a new provider under
-
Add the backend logic for the provider.
- Add the logic for the provider under
desktop/src/providers/<YOUR_PROVIDER>
. - Add the provider's config to the
ProviderConfig
enum. - Add the provider's outputs to the
ProviderOutput
enum. - Add the provider to the switch statement in
create_provider(...)
. - Add the provider's exports to
desktop/src/providers/mod.rs
- Add the logic for the provider under