Skip to content

Getting Started

Welcome to Dalang. This guide gets you from zero to your first pull request in under 30 minutes.

Prerequisites

Rust (via rustup)

Terminal window
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Verify:

Terminal window
rustc --version
cargo --version

Bun (JavaScript runtime & package manager)

Terminal window
curl -fsSL https://bun.sh/install | bash

Verify:

Terminal window
bun --version

Just (task runner)

Terminal window
cargo install just

Verify:

Terminal window
just --version

First-Time Setup

Terminal window
git clone https://github.com/dalangHQ/dalang-monorepo.git
cd dalang-monorepo
bun install
just ci

If just ci passes, you’re ready.

Monorepo Layout

DirectoryContentsLanguage
product/crates/Core Wasm runtime cratesRust
product/cli/dalang CLI binaryRust
product/wit/WIT contract definitionsWIT
hub/api/SaaS backend APIRust
hub/storefront-ui/White-label marketplace UITypeScript
docs/Astro Starlight documentation siteTypeScript/Astro
company/Business strategy & playbookMarkdown
ops/Infrastructure (Terraform, Helm)HCL/YAML

Common Tasks

Run all checks locallyjust ci (Rust tests + lint + docs build).

Start docs dev serverjust dev-docs → live preview at http://localhost:4321.

Run only Rust checksjust test-fast (build + clippy + tests).

Build docs for deploymentjust build-docs.

List all available commandsjust --list.

Your First Contribution

Fix a docs typo

  1. Edit any .md file under docs/src/content/docs/ or company/
  2. Run just build-docs to verify the Astro build
  3. Commit: git commit -m "docs: fix typo in getting-started guide"
  4. Push and open a PR

Add a Rust feature

  1. git checkout -b feat/my-feature
  2. Add code in product/crates/dalang-core/src/
  3. Add tests inline (#[cfg(test)] mod tests { ... })
  4. Run just ci to verify everything
  5. Commit: git commit -m "feat(core): add my-feature"
  6. Push and open a PR

Update the company handbook

  1. Edit a file in company/ (e.g. company/strategy/master-plan.md)
  2. Ensure YAML frontmatter has at least title and description
  3. Run just dev-docs to preview at http://localhost:4321
  4. Commit: git commit -m "company(strategy): update master plan"
  5. Push and open a PR

CI Pipeline

PRs trigger GitHub Actions that only test changed paths:

Changed pathCI runs
product/** or Cargo.tomlRust tests + clippy + fmt
hub/**Rust tests + Astro build
docs/**, company/**, README.mdAstro build only

Cycle time under 2 minutes for the common case.

Releases

No manual version bumps. CI automates via release-plz:

  1. Merge a PR with conventional commit (e.g. feat(core): ...)
  2. release-plz opens a chore: release PR with bumped versions + changelog
  3. A maintainer merges it
  4. release-plz publishes to crates.io and creates a GitHub Release

See the Releases runbook for details.

Next Steps