Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,13 @@ jobs:
- run: just build
- run: just build-cli-test-contracts
- name: Create nextest archive
run: cargo nextest archive --archive-file nextest-archive.tar.zst --package stellar-scaffold-cli --package stellar-registry-cli --features integration-tests
run: cargo nextest archive --archive-file nextest-archive.tar.zst --package stellar-scaffold-cli --package stellar-registry-cli --package stellar-scaffold-reporter --features integration-tests
- name: Package runtime artifacts
run: |
tar -cf - \
target/debug/stellar-scaffold \
target/debug/stellar-registry \
target/debug/stellar-scaffold-reporter \
target/stellar/local/ \
crates/stellar-scaffold-test/fixtures/soroban-init-boilerplate/target/stellar/local/ \
| zstd -1 -o runtime-artifacts.tar.zst
Expand Down Expand Up @@ -81,6 +82,8 @@ jobs:
filter: "test-integration-scaffold-examples-2"
- name: registry-cli
filter: "test-integration-registry"
- name: reporter
filter: "test-integration-reporter"
env:
STELLAR_RPC_URL: http://localhost:8000/soroban/rpc
STELLAR_NETWORK_PASSPHRASE: "Standalone Network ; February 2017"
Expand Down
12 changes: 12 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 24 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

**Scaffold Stellar** is a developer toolkit for building decentralized applications (dApps) and smart contracts on the [**Stellar** blockchain](https://stellar.org).

It helps you go from **idea** to **working full-stack dApp** faster by providing CLI tools, reusable contract templates, a smart contract registry, and a modern frontend.
It helps you go from **idea** to **working full-stack dApp** faster by providing CLI tools, reusable contract templates, a smart contract registry, and a modern frontend.

---

Expand Down Expand Up @@ -143,6 +143,28 @@ stellar registry install my-contract-instance # Instal
> Use `--help` on any command for usage instructions.

---

## Extensions

Scaffold Stellar's build pipeline supports extensions by calling binaries on your PATH that tap into lifecycle hooks fired before and after each compile, deploy, codegen, and watch cycle.

The built-in **[Scaffold Reporter](./crates/stellar-scaffold-reporter/)** extension is included in every new project. It logs compile times, WASM sizes, deploy durations, and total build cycle time directly to your console.

Register extensions in `environments.toml`:

```toml
[development]
extensions = ["reporter"]

# Optional per-extension config:
[development.ext.reporter]
warn_size_kb = 128
```

See the [Extensions Guide](https://scaffoldstellar.com/docs/extensions) to learn how the hook system works and how to build your own extension.

---

## Smart Contract Deployment

### 1. Publish Your Contract
Expand Down Expand Up @@ -248,7 +270,7 @@ Ask questions in the repo Discussions tab

Search [DeepWiki](https://deepwiki.org/)

Or just open an issue — we're happy to help!
Or just open an issue. We're happy to help!

Happy hacking!
---
20 changes: 20 additions & 0 deletions crates/stellar-scaffold-cli/build.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
fn main() {
crate_git_revision::init();

// cargo_bin!("stellar-scaffold-reporter") in integration tests expands to
// env!("CARGO_BIN_EXE_stellar-scaffold-reporter"), which Cargo sets for
// same-package binaries and dev-dependency binaries during `cargo test` but
// NOT during `cargo clippy --tests`. Emitting it here ensures it is always
// present at compile time regardless of how the crate is being built.
let out_dir = std::env::var("OUT_DIR").unwrap();
// OUT_DIR = target/<profile>/build/<hash>/out — 3 levels up is target/<profile>/
let target_dir = std::path::Path::new(&out_dir).ancestors().nth(3).unwrap();
let exe_suffix = if cfg!(target_os = "windows") {
".exe"
} else {
""
};
println!(
"cargo:rustc-env=CARGO_BIN_EXE_stellar-scaffold-reporter={}",
target_dir
.join(format!("stellar-scaffold-reporter{exe_suffix}"))
.display()
);
}
Loading
Loading