Quickstart
60-Second Flow
joy new hello_cpp
cd hello_cpp
joy add nlohmann/json
joy run
joy tree
What happens:
joy newscaffoldsjoy.toml,src/main.cpp, and.gitignore.joy addrecords dependency intent and runs sync-lite refresh by default.joy runbuilds the project and executes the binary.joy treeshows 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