Open for contributions. This page follows
CONTRIBUTING.md on the repo’s main branch as of 3 October 2026. If the two differ, the repo is right.What you’ll build
A new template folder that works on its own after someone copies just that folder, with tests, deploy and verify scripts for both Foundry and Hardhat 3, and a small web app.Prerequisites
- Node.js 20.19 or newer and Foundry.
- A funded testnet wallet. See Get testnet tokens.
- A look at one Ready template, such as Token, so you know the shape.
Rules for every template
- Don’t hard-code chain IDs, RPC URLs, or contract or pool addresses. Use
@uzolabs/sdk, environment variables or lookups at runtime. - Never commit a private key, mnemonic or API key, including in tests, examples and CI. Only
.env.exampleis committed. - Don’t use
eth_getLogsor log-based hooks in frontends. Poll reads instead. - Explain every new dependency in the template’s README.
- If something about BOT Chain is still unknown, make it a setting or leave it out.
- No em dashes in READMEs, comments or UI text.
- Start every README with the learning-template disclaimer and end it with the independence note.
- Default to testnet. Mainnet needs
--mainnetorMAINNET=trueplus a typed confirmation. - No runtime imports from sibling folders or
_shared/. - Foundry and Hardhat 3 must both compile, test, deploy and verify from the same
contracts/andtest/.
npm run check enforces the rules a script can check. Reviewers check the rest.
Steps
1
Set up the repo
Terminal
2
Start from the token template
Copy
token/ and rename it. Replace the contract, tests, deploy script, Ignition module and frontend.3
Add it to CI
Add the folder to the
template matrix in both .github/workflows/ci.yml and .github/workflows/testnet-deploy.yml.4
Deploy and verify on testnet
Deploy and verify with both toolchains, then paste the real commands and output into the template’s README.
5
Run the checks
Terminal
_shared/, run npm run sync, then commit _shared/ and the templates together. CI fails if a template’s copy drifts.
Verify
Before you open a pull request, run these in your template folder:Terminal
Troubleshooting
sync:check reports drift
sync:check reports drift
A shared file was edited inside a template. Make the change in
_shared/ instead and run npm run sync.check fails on a hard-coded address
check fails on a hard-coded address
Read the address from
@uzolabs/sdk/contracts or an environment variable.Next steps
Templates on GitHub
The repo and its issues. Questions can also go to uzolabsxyz@gmail.com.
Use a template
How people will copy yours.