Everything you need to build a Svelte project, powered by sv.
If you're seeing this, you've probably already done this step. Congrats!
# create a new project in the current directory
npx sv create
# create a new project in my-app
npx sv create my-appOnce you've created a project and installed dependencies with npm install (or pnpm install or yarn), start a development server:
npm run dev
# or start the server and open the app in a new browser tab
npm run dev -- --openTo create a production version of your app:
npm run buildYou can preview the production build with npm run preview.
To deploy your app, you may need to install an adapter for your target environment.
This app supports two Safe onboarding modes:
- Owner (signer): proposes an on-chain
addOwnertransaction to the configured Safe - Proposer: registers the user wallet as a Safe delegate (can propose transactions, cannot confirm/execute)
Configure the default behavior with:
SAFE_ONBOARDING_ROLE=owner|proposerSAFE_DELEGATOR_PRIVATE_KEY(recommended): an EOA that can sign delegate registrations
Snapshot voting power is determined by the space configuration (strategies + voting validation) and the address that signs the vote.
If you want users who are Safe proposers (not owners) to still vote, ensure your Snapshot space voting power is based on the member wallet (token/NFT/whitelist/etc.), not Safe ownership or “vote as the Safe”.
This repo uses SNAPSHOT_SPACE (default ecohubs.eth) for proposal creation and result reads.