Contributing
Development setup
Ferry is one repository with three projects. Build it from source, run it, then follow the rules for a change.
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 workspace with two front-end projects next to it: the dashboard in web/ and this site in docs/.
Each crate has unit tests next to its code and integration tests 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
cargo build
./target/debug/ferryd run --data-dir ./ferry-data