PG Award Proposal: Stellar Scaffold - #115
Conversation
|
@chadoh Thanks for the submission, and for being upfront about what shipped versus what didn't. Per-deliverable, against the Q2 scope:
On the budget. This was a $50K quarter scoped as D1 through D8. D2 and D8 landed, D1 is done pending merge, D3 is past halfway -- but D4, D5, D6, and D7 did not ship. That's a real gap between what was funded and what was delivered. This also keeps Q3 clean. Whatever you carry over is then funded fresh in the Q3 ask, rather than being paid once in the Q2 remainder and again in Q3. Send the per-deliverable breakdown when you can, and mark which carried items you intend to finish in Q3. |
|
Hey @ankeliu, thanks for the feedback! We definitely understand the sentiment. The framing is fair and we agree with the principle: carried over work shouldn't be paid twice. We tried to scope things in a way this quarter that weren't simply pushing work from the previous quarter, but instead focused on new aspects of work that were revealed while investigating or implementing things. There was also a fair amount of work done last quarter on unexpected fixes and features, and we didn't know the best way to handle that or express it given the current workflow. Maybe that's something we could discuss? For example, lots of effort went into trying to juggle dependency issues stemming from the Protocol 26 release, which wasn't planned or listed as a Q2 deliverable but was still necessary. And in fact, we ended up having to do it all over again because some of our dependencies jumped straight to P27. How should we account for things like this in the future? Before I do the effort breakdown, there are some corrections to the status you reviewed against. This is our fault, not yours. Migrating the repo into the new Finally here is our best judgement of the effort breakdown across those deliverables. You can see we tried to focus our work on the largest and most important tasks first. These percentages can be roughly verified by comparing lines changed, number of commits, review volume within closed PRs, and length of calendar time during review discussions. I know these aren't the best proxies for real effort, and they certainly understate the amount of planning and side discussions happening for big design decisions. But at least it gives you something concrete to compare against and I think it does roughly correlate to our actual level of effort. I hope that helps. Please let me know if there's any other info we can provide! |
Co-authored-by: Zach Fedor <zachfedor@gmail.com> Signed-off-by: Pamphile Roy <23188539+tupui@users.noreply.github.com>
for more information, see https://pre-commit.ci
|
@aolieman, thanks for the metric badges. To make sure they're accurate, how can I associate the rest of the repos for the project? This project encapsulates https://github.com/stellar-scaffold/ui too. I looked at #117 as a reference, is it as simple as using the GH org as the value for Repository in the front matter table? |
Anke sent some instructions a while back. It's possible you didn't receive them. I can add the repo url to the table at the top of your proposal, if that's really what you want. My advice would be to only link your UI repo if it has significantly more tracked package downloads than the CLI. Otherwise it's going to lower the project's adoption score. To get a preview of the UI repo metrics, you can enroll it by putting the SBOM Action in a GitHub workflow. Stats should be visible in PG Atlas an hour after uploading it's first SBOM. More interesting for me is: do you have a way of tracking which projects are using Scaffold? Which adoption data does your team look at? I don't know if you git init a scaffolded project, but you could add the SBOM Action in the project dir to track those that get pushed to GitHub through PG Atlas. |
|
@zachfedor Thanks for this, and for the correction on the milestone under-reporting: the broken cross-repo links and the four issues that fell out of the milestone in the org migration explain the gap between what the milestone showed and what actually landed. Good to have the accurate 9-closed picture. On the P26/P27 dependency work you raised: that's a fair question and it's one we're settling as a general rule going forward. The principle we're landing on is that legit, necessary work done in place of a listed deliverable -- like the Protocol 26/27 dependency juggling -- shouldn't be treated as if nothing happened. We haven't enforced that consistently before, so we're applying it with some flexibility in this round. Taking your effort breakdown together with that, we're setting the Q2 deduction at $3,000 -- covering the genuinely unshipped items (D4, D6, D7, and the docs page still open), not the re-architecture call or the dependency work. D1, D2, D3, and D8 are treated as delivered. The carried items get funded fresh in Q3, so nothing is paid twice. If that works, we'll email you with next steps on payment for Q2 deliverables. |
SummaryReady for Q2 payment with a $3,000 deduction. Uneven delivery, honestly reported and resolved; Q3 slate needs trimming. Q2 completion Q3 deliverables — discussion User Signal |
Proposal Successfully Submitted to Tansu 🚀The proposal has been uploaded to IPFS and submitted on-chain.
|
|
Thanks @ankeliu! We appreciate the response. As for Q3 deliverables, we recognized the scope problem while writing the proposal and we think we corrected for it before any review input. So we don't think it's necessary to reduce the scope again after the fact. And now that we have the repo migration and issue tracking wired up correctly, we can better stay on top of our velocity this quarter and deliver on time. Hope that helps! |
|
Thank you for the reply @zachfedor, I will reach out by email for next steps regarding the Q2 payment! |
Stellar Scaffold
Go from idea to app faster with a custom, pluggable CLI; a multi-framework template system; and a
customizable, modern frontend.
Project Description
Stellar Scaffold is an open-source developer toolkit for building decentralized applications (dApps)
and smart contracts on the Stellar blockchain. It helps developers go from idea to working full-stack
dApp faster by providing CLI tools, reusable contract templates, first-class integration with Stellar
Registry (now incubated out into its own project), and modern, customizable frontend templates for
multiple JS frameworks.
Team & Experience
Stellar Scaffold is built and maintained by The Aha Company (formerly Aha Labs), a team of 10+
senior engineers deeply embedded in the Stellar ecosystem.
Early Soroban origin
In 2022 (before Soroban had a name) SDF already had a clear ambition: launch their upcoming smart
contract platform with a “batteries-included” developer experience. The gap was execution capacity:
there was no in-house team available to design and implement the developer workflows needed to make
that promise real. Tyler van der Hoeven went to major blockchain conferences to find the right team,
and identified The Aha Company as the team with the right combination of product mindset and deep
technical ability to “install the batteries.”
Foundational Stellar developer workflows we designed and shipped
We envisioned, architected, and implemented several of the workflows that have become core to Soroban
development on Stellar, including:
contract invokebehavior and associateddeveloper ergonomics that leapfrog, rather than ape, other blockchain ecosystems, simplifying
testing, deployment, and interaction.
stellar-sdk-js, which helps application developers interact with contracts more safely and
predictably.
Why we were selected for Stellar Scaffold and our SCF track record
In early 2025, SDF searched for a team that could bring a ScaffoldETH-like end-to-end experience to
Stellar. They selected us based on:
https://communityfund.stellar.org/project/smart-deploy-yoj
https://communityfund.stellar.org/project/loam-qj5
Stellar Scaffold is a direct continuation of that work: turning the hard-won Developer Experience
(DevX) knowledge from core tooling into a “front door” experience that helps developers go from idea
to proof-of-concept quickly, with strong defaults and a convention-over-configuration approach.
Ongoing maintenance and production-grade integration experience
Since then, we have remained engaged with SDF to support and maintain key tooling (most recently
improving Stellar CLI handling of hardware-based keys) and we continue to operate as an
integration partner on production deployments. Notably, we architected and developed Société
Générale’s EURCV on Stellar (now live), bringing a rigorous, real-world perspective to developer
tooling and reliability requirements.
Deep community participation and ecosystem leadership
Our team includes well-known ecosystem contributors. Several members hold key community roles (e.g.,
SCF Pilot, category delegates) and actively build their own SCF projects (e.g., Moonlight,
Tansu, Stellar Merch Store, PG Atlas). We contribute to protocol and tooling discussions, provide
developer support at hackathons and conferences, and invest heavily in community outreach and
education. We show up consistently at major events and actively communicate about Stellar, both its
strengths and the practical realities builders need to know.
Cross-ecosystem perspective (DevX benchmarking)
Beyond Stellar, The Aha Company is also an integration partner in other ecosystems (e.g., Filecoin,
XRPL, Cardano, Canton, Starknet). This gives us a unique ability to benchmark developer experience
across chains and bring proven patterns back to Stellar—while keeping Stellar Scaffold aligned with
what developers expect from modern, full-stack tooling.
Retroactive Impact
matured enough over the last two quarters to be spun out as an independent public good with its own
team, repos, and roadmap. The extraction of the Scaffold CLI into its own focused repository was
completed this quarter (split: extract scaffold-cli from monorepo stellar-scaffold/cli#535), and Scaffold remains the
primary integration surface for publishing and consuming Registry contracts. This is the incubation
model working as intended.
were upgraded to Protocol 27 (feat: upgrade to stellar protocol 27 stellar-scaffold/cli#549) and released
immediately (2026-06-30), so builders scaffolding new projects were never stuck on an old protocol.
stellar-scaffold-clireleases shipped this quarter (v0.0.22,v0.0.23, v0.0.24) plus supporting crates, with notes:
https://github.com/stellar-scaffold/cli/releases
(docs: Add Docker to Scaffold Stellar prerequisites stellar/stellar-docs#2267).
in the official SKILL.
Past Deliverables
Q2 in summary. We made Q2 a deliberate re-architecture quarter. Three structural efforts — the
Registry split, the multi-framework Template Monorepo, and the Protocol 27 upgrade — consumed most of
the quarter and touched nearly every deliverable below. That investment is what makes the Q3 list
finishable: wallet integration now lands once in a shared package instead of per-template, community
templates have a real extension point, and the config-file migration has its first slice shipped. Of
the eight committed deliverables, one shipped fully, two shipped substantially, and the remainder
have completed discovery/design with implementation carried into Q3 — several with open PRs already.
D1: Support Stellar-Wallets-Kit v2
Shipped. Upgraded integration, improved UX, and network polling workaround merged in
stellar-scaffold/ui#241. The Template Monorepo restructure (see D3, D8) moved
wallet integration into the shared
@stellar-scaffold/app-libpackage, so the v2 upgrade now landsonce for every framework template instead of once per template. Finishing this is committed in Q3
(see Proposed D3).
D2: Allow package manager of choice
Shipped. Core package-manager-agnostic behavior merged in
stellar-scaffold/cli#345, with follow-up improvements in
stellar-scaffold/cli#491, released in
stellar-scaffold-cliv0.0.24. Thetracking issue is closed.
D3: BYOFrontend
Substantially shipped via the Template Monorepo effort
(stellar-scaffold/cli#543, stellar-scaffold/ui#234,
and stellar-scaffold/cli#564):
templates/react,templates/svelte, plus a sharedapp-libpackage for wallet, storage, and formatting logic),delivering the official Svelte template.
stellar scaffold init --templateaccepts either an official framework name (e.g.svelte) or anorg/repocommunity template, establishing the "bring your own frontend" path.scaffold.ymlconfig:section lets any template declare where its contracts, TypeScriptbindings, and contract clients live, so community templates can follow their own framework
conventions.
--no-templateor--template noneallows a contract-only workflow without any frontendA community-template contribution guide — was not delivered in Q2 and is explicitly committed in Q3
(Proposed D5).
D4: SKILL.md to help agentic workflows
Not shipped in Q2; design work completed. The Registry split re-scoped this deliverable: each product
now needs its own agent-facing doc (Scaffold's
SKILL.mdhosted at scaffoldstellar.org, Registry'sown alongside its site), and the template monorepo introduced a second need — in-project agent docs
that
initcarries into generated end-user projects. The re-scoped design is committed in Q3 (seeProposed D4).
D5: Improve Scaffold info on main Stellar docs
Shipped. Scope was agreed in the issue discussion (minimize the page, link prominently to the
dedicated docs site), and smaller upstream improvements shipped in the meantime
(stellar/stellar-docs#2267). Multiple pages reworked on Stellar docs
(stellar/stellar-docs#2708) and contain pointers to updated documentation on
new, redesigned Scaffold docs site (stellar-scaffold/cli#577).
D6: Monitor releases of ecosystem projects
Not shipped; design discussion in the issue converged on an approach: scheduled CI (cron) jobs that
test against dependency releases (or HEAD/nightly builds for early warning), structured so that
projects built with Scaffold can inherit the same alerts. Our existing scheduled-update flow for
the OpenZeppelin example contracts serves as the prototype. Carried into Q3 as a stretch goal
(Proposed D9) behind the committed re-architecture work.
D7: Allow building for testnet when localnet unhealthy
Not shipped as a point fix — investigation showed the network-health check is baked into the build
internals being reworked under D8, and that a point fix would fight the old config model. The durable
fix lands with the Q3
scaffold.ymlnetworks rework (Proposed D2), which decouples target-networkbuilds from localnet state; the new
scaffold doctorcommand (Proposed D1) then gives usersself-serve diagnosis of unhealthy localnets instead of a confusing failure.
D8: Re-architect stellar scaffold build internals & update to latest best practices
Major structural work shipped:
(split: extract scaffold-cli from monorepo stellar-scaffold/cli#535).
init,upgrade, andcleanaround the new template monorepo, factoringinitintothree clean steps — acquire, instantiate, prepare — replacing the original single-repo degit logic
(Template Monorepo stellar-scaffold/cli#543).
scaffold.ymlconfiguration file (the per-templateconfig:section), the replacement for
environments.tomlproposed in issue 181.The discovery work here defined the remaining schema migration (networks and contract-client config)
and the
--optimizepassthrough, both committed in Q3 (Proposed D2).Ongoing maintenance, releases, and field feedback loop
Regular tagged releases with notes continued throughout the quarter
(https://github.com/stellar-scaffold/cli/releases), including three
stellar-scaffold-clireleases,OpenZeppelin example-contract updates, and the Protocol 27 upgrade.
Proposed Impact
With Stellar Registry incubated out as its own public good, Stellar Scaffold enters Q3 with a sharper
scope: the front door of the Stellar ecosystem. The template monorepo shipped in Q2 turns "the
official React starter" into a multi-framework template system — Svelte is live, and the
org/repotemplate flag opens the door to community-maintained frontends, letting the ecosystem grow templates
without growing our payroll. Agent-facing documentation will make Scaffold the most reliable way for
AI-assisted builders (the majority at recent hackathons) to produce working Stellar dApps. And
scaffold doctorcuts the support burden that environment problems create at every hackathon.We are deliberately committing to a shorter list this quarter than last: the Q2 re-architecture is
done, and Q3 is about finishing what it unblocked. Every committed deliverable below either has an
open PR, a shipped first slice, or a completed design from Q2 discovery.
A note on budget
The Registry split moves that workstream to its own proposal, but it does not shrink this one
proportionally: the template surface we maintain grew from one framework to a monorepo of shared
core + multiple templates (each needing e2e coverage, releases, and protocol upgrades), and Scaffold
remains the integration surface for Registry, wallets, and other ecosystem dependencies. The budget
now buys depth and reliability on that wider surface rather than breadth of new workstreams.
Proposed Deliverables
D1: Create
scaffold doctorcommandtoolchain, missing dependencies (e.g. Docker), an unhealthy localnet, incorrect
scaffold.ymlvalues.
scaffold doctorcommand stellar-scaffold/cli#557 (and resolves the failure mode reportedin Bug: Cannot build project for testnet if local network is unhealthy stellar-scaffold/cli#267)
environment problems, not Scaffold bugs. Self-serve diagnosis shortens time-to-first-success for
new builders — especially at hackathons — and reduces maintainer support load across the ecosystem.
It also provides value to projects bootstrapped by other means (not Scaffold) that end up with
environment and version problems.
D2: Complete the
scaffold.ymlconfiguration migrationinto
scaffold.yml(whoseconfig:section shipped with the template monorepo), retireenvironments.toml, and pass through the--optimizeflag tostellar contract build.environments.tomldeprecated with amigration path; optimize passthrough shipped.
environments.tomlshould be...contract-clients.yml??? stellar-scaffold/cli#181,Include optimize option in stellar scaffold build stellar-scaffold/cli#329
(Specify contract from live network stellar-scaffold/cli#346)
rework also decouples target-network builds from localnet state (the root cause behind issue 267)
and enables per-framework directory conventions for community templates.
D3: Ship Stellar-Wallets-Kit v2 through the shared wallet module
@stellar-scaffold/app-libpackage so allframework templates (React, Svelte, and future Vue) get the upgrade from a single integration
point.
feat: upgrade Stellar-Wallets-Kit to v2 stellar-scaffold/ui#241)
shared-app-lib architecture: one wallet integration maintained once, consumed by every template.
D4: Agent-facing docs: hosted
SKILL.md+ in-projectAGENTS.mdSKILL.mdat scaffoldstellar.org teaching AI agents Scaffold as a system,and ship
AGENTS.mdfiles in generated projects (withinitstripping contributor-only content soend users get docs scoped to their app).
SKILL.mdlive and fetchable by URL; generated projects include a correctAGENTS.md;both documented.
SKILL.mdto help agentic workflows stellar-scaffold/cli#394addition to, or rather than, coding by hand. Accurate agent-facing docs make that experience
fool-proof, preventing AIs from making silly mistakes both when scaffolding a project and when
working inside one.
D5: Complete BYOFrontend: "no frontend" option + community-template guide
(contracts and clients without a UI layer) and a contribution guide documenting how community
members build and publish their own framework templates for
stellar scaffold init --template org/repo.least the existing official templates documented as reference implementations.
ecosystem gets more framework options (Vue, Solid, etc.) without every template landing on one
team's maintenance budget.
D6: Documentation consolidation & redesign
tutorial to cover the latest Registry publish/deploy integration, complete the domain migration,
and minimize the Scaffold page on the main Stellar docs to link prominently to the dedicated site.
update scaffold tutorial with latest Registry stellar-scaffold/cli#437,
Improve Scaffold info on main Stellar docs stellar-scaffold/cli#361,
Update domain to stellarscaffold.org stellar-scaffold/cli#550
information across the ecosystem and keeping the Registry integration path — now a cross-project
concern — accurately documented.
D7: Ongoing maintenance & releases
issue/PR triage, and CI reliability work as the template matrix grows.
libraries; reliability is the feature.
D8 (Stretch): At least one ecosystem-contributed UI template
This could be a new JS view engine such as Vue, or an existing view engine (React, Svelte)
configured differently (such as React with NextJS and different styling opinions). This will be
selectable via
stellar scaffold init.init, documented.worked example for the community-template guide (D5). Stretch rather than committed: we'd rather
demand for Vue prove itself via the community path than pre-commit maintenance of a third official
template.
D9 (Stretch): Monitor releases of ecosystem projects
PRs) when complex ecosystem dependencies such as Stellar-Wallets-Kit publish updates, structured so
projects built with Scaffold can adopt the same alerts.
and every project scaffolded from it — working and current.
D10 (Stretch): Anonymous usage telemetry
scaffold initcounts, deploys per network)so the team can measure real adoption instead of relying on anecdote. Do this in conjunction with
indexing already-available on-chain data, and prefer on-chain data as the source when possible.
index all on-chain contracts to measure growth of those scaffold-built stellar-scaffold/cli#479
prioritize future work by evidence.
D11 (Stretch): Interactive OpenZeppelin contract wizard
project (building on the draft in Add OZ wizard in scaffold cli stellar-scaffold/cli#391).
contracts.
D12 (Stretch): Update starter app's Debug page
details, and a persistent block-explorer link.
mean faster learning.
Metrics loaded from PG Atlas
Legal Acknowledgements