Getting Started
Welcome to Dalang. This guide gets you from zero to your first pull request in under 30 minutes.
Prerequisites
Rust (via rustup)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shVerify:
rustc --versioncargo --versionBun (JavaScript runtime & package manager)
curl -fsSL https://bun.sh/install | bashVerify:
bun --versionJust (task runner)
cargo install justVerify:
just --versionFirst-Time Setup
git clone https://github.com/dalangHQ/dalang-monorepo.gitcd dalang-monorepobun installjust ciIf just ci passes, you’re ready.
Monorepo Layout
| Directory | Contents | Language |
|---|---|---|
product/crates/ | Core Wasm runtime crates | Rust |
product/cli/ | dalang CLI binary | Rust |
product/wit/ | WIT contract definitions | WIT |
hub/api/ | SaaS backend API | Rust |
hub/storefront-ui/ | White-label marketplace UI | TypeScript |
docs/ | Astro Starlight documentation site | TypeScript/Astro |
company/ | Business strategy & playbook | Markdown |
ops/ | Infrastructure (Terraform, Helm) | HCL/YAML |
Common Tasks
Run all checks locally — just ci (Rust tests + lint + docs build).
Start docs dev server — just dev-docs → live preview at http://localhost:4321.
Run only Rust checks — just test-fast (build + clippy + tests).
Build docs for deployment — just build-docs.
List all available commands — just --list.
Your First Contribution
Fix a docs typo
- Edit any
.mdfile underdocs/src/content/docs/orcompany/ - Run
just build-docsto verify the Astro build - Commit:
git commit -m "docs: fix typo in getting-started guide" - Push and open a PR
Add a Rust feature
git checkout -b feat/my-feature- Add code in
product/crates/dalang-core/src/ - Add tests inline (
#[cfg(test)] mod tests { ... }) - Run
just cito verify everything - Commit:
git commit -m "feat(core): add my-feature" - Push and open a PR
Update the company handbook
- Edit a file in
company/(e.g.company/strategy/master-plan.md) - Ensure YAML frontmatter has at least
titleanddescription - Run
just dev-docsto preview athttp://localhost:4321 - Commit:
git commit -m "company(strategy): update master plan" - Push and open a PR
CI Pipeline
PRs trigger GitHub Actions that only test changed paths:
| Changed path | CI runs |
|---|---|
product/** or Cargo.toml | Rust tests + clippy + fmt |
hub/** | Rust tests + Astro build |
docs/**, company/**, README.md | Astro build only |
Cycle time under 2 minutes for the common case.
Releases
No manual version bumps. CI automates via release-plz:
- Merge a PR with conventional commit (e.g.
feat(core): ...) release-plzopens achore: releasePR with bumped versions + changelog- A maintainer merges it
release-plzpublishes to crates.io and creates a GitHub Release
See the Releases runbook for details.
Next Steps
- Read the Architecture Overview
- Browse the Company Handbook to understand the business
- Pick a good first issue