FerryDocs
Contributing

Development setup

Ferry is one repository with three projects. Build it from source, run it, then follow the rules for a change.

Edit on GitHub
cargo buildnpm run buildembedtokens.cssreference pagesweb/the dashboarddocs/this sitecrates/the Rust codeweb/distthe built filesferrydand the ferry CLI

The repository has three projects: the Rust code, the dashboard and this site.

1 / 4
ferry-core — models, DTOs, config, Store, env resolution, traits
ferry-docker — Docker Engine API wrapper
ferry-build — fetch, detect, Dockerfile generation, docker build
ferry-scm — the git providers: GitHub and GitLab
ferry-proxy — reverse proxy and route table
ferry-tls — ACME certificates
ferry-engine — deploys, reconciler, cron, datastores, logs
ferry-api — REST, SSE, webhooks, blueprints, OpenAPI
ferry-cli — the ferry binary
ferryd — the server binary (wiring)
web/ — the React dashboard (own package.json)
docs/ — this documentation site (own package.json)
DESIGN.md — the design and the contract between crates
README.md
Cargo.toml — the workspace
rustfmt.toml

Ferry is a Rust with two front-end projects next to it: the in web/ and this site in docs/.

Each has next to its code and in crates/<crate>/tests/. The crates shows how they depend on each other.

Read DESIGN.md before you change a behavior. It is the contract between the crates.

Build and start

Terminal
cargo build
./target/debug/ferryd run --data-dir ./ferry-data

In this section

On this page