Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Quickstart

60-Second Flow

joy new hello_cpp
cd hello_cpp
joy add nlohmann/json
joy run
joy tree

What happens:

  1. joy new scaffolds joy.toml, src/main.cpp, and .gitignore.
  2. joy add records dependency intent and runs sync-lite refresh by default.
  3. joy run builds the project and executes the binary.
  4. joy tree shows resolved dependency graph state.

Reproducible Follow-Up Flow

After the first run, validate deterministic state:

joy fetch
joy --frozen sync
joy --frozen build
joy --json verify --strict --sbom sbom.json

What Gets Created

Project-local state is kept under .joy/ and lock state in joy.lock.

Typical layout:

hello_cpp/
  joy.toml
  joy.lock
  compile_commands.json
  src/
    main.cpp
  .joy/
    build/
      compile_commands.<target>.json
    bin/
    include/
    lib/
    state/
      dependency-graph.json

Next Steps