π§ͺ An open-source, up-to-date toolkit for building decentralized applications (dapps) on Starknet. It's designed to make it easier for developers to create and deploy smart contracts and build user interfaces that interact with those contracts.
βοΈ Built using NextJS, Starknet.js, Starknet-React, Starknetkit, Typescript, Scarb, and Starknet-Foundry.
Before you begin, you need to install the following tools:
To get started with Starknet-Scaffold, Clone this repo:
git clone [email protected]:argentlabs/Starknet-Scaffold.git
cd Starknet-Scaffold
Or to install using create-starknet-app:
npx create-starknet-app
Scripts exists to make your life easier! A missing script you'd like to see? open a PR to update this section
Feature | Available |
---|---|
Build Contract | β |
Format Contract | β |
Generate SRC5 Interface | β |
Prepare Account | β |
Deploy Account | β |
Delete Account | β |
Declare Contract | β |
Deploy Contract | β |
Good with Typescript and Tailwind? We've got missing UI components we'll love to see!
Feature | Available |
---|---|
Connect button & Custom Wallet Modal | β |
Address bar (Displays StarknetID) | β |
Transactions List | β |
modal to copy/disconnect/view account | β |
Display account balance | β |
Switch/display network | β |
App Light/Dark mode | β |
The contract
folder contains all the tools needed to write, build, test and deploy your Starknet smart contracts. It is built with Scarb and Starknet Foundry. Here are common operations you can perform on your contracts:
To build your smart contracts, from the base repository run:
npm run build-contracts
Scarb comes with an in-built cairo formatter. To utilize it run:
npm run format-contracts
To run your tests:
npm run test-contracts
To generate an interface ID, run:
npm run generate-interface <PATH_TO_INTERFACE>
To prepare your account for deployment, run:
npm run prepare-account --url=<RPC_URL> --name=<ACCOUNT_NAME>
generates a profile which is added to scarb.toml
and can be passed to other commands.
To deploy an account:
npm run deploy-account --profile=<MY_PROFILE> --name=<ACCOUNT_NAME> --maxfee=<MAX_FEE>
where the profile
is gotten from scarb.toml
, name
is the prepared account and maxfee
is the specified max fee.
To delete an account:
npm run delete-account --url=<RPC_URL> --name=<ACCOUNT_NAME> --network=<alpha-mainnet | alpha-goerli>
To declare a contract:
npm run declare-contract --profile=<MY_PROFILE> --contract=<CONTRACT_NAME>
To deploy a contract:
npm run deploy-contract --profile=<MY_PROFILE> --classhash=<CONTRACT_CLASSHASH>
The frontend
section contains all UI components. Built using NextJS, Starknet.js, Starknet-React, Starknetkit, and Typescript.
To run UI, from the base repository:
npm run start
To build your frontend, from the base repository run:
npm run build-ui
Documentations of tools used in this scaffold:
We welcome contributions to Starknet-Scaffold!
Please see CONTRIBUTING.MD for more information and guidelines for contributing to Starknet-Scaffold.
TL;DR:
- Create a new issue.
- Comment on the issue (if you'd like to be assigned to it).
- If you're not sure, here's how to fork the repo.
If you're ready to contribute and create your PR, it will help to set up a local environment so you can see your changes.
-
Clone your fork
If this is your first time forking our repo, this is all you need to do for this step:
git clone [email protected]:[your_github_handle]/Starknet-Scaffold.git && cd Starknet-Scaffold
If you've already forked the repo, you'll want to ensure your fork is configured and that it's up to date. This will save you the headache of potential merge conflicts.
git remote add upstream https://github.com/argentlabs/Starknet-Scaffold.git
To sync your fork with the latest changes:
git checkout main
git fetch upstream
git merge upstream/main
- Install dependencies
npm install
- Create new branch for your changes
git checkout -b new_branch_name
- Start developing!
npm run start
- Commit and prepare for pull request (PR). In your PR commit message, reference the issue it resolves (see how to link a commit message to an issue using a keyword).
git commit -m "brief description of changes [Fixes #123]"
- Push to your GitHub account
git push
- After your changes are committed to your GitHub fork, submit a pull request (PR) to the
main
branch of theargentlabs/Starknet-Scaffold
repo - In your PR description, reference the issue it resolves (see linking a pull request to an issue using a keyword)
- ex.
Updates out of date content [Fixes #1234]
- ex.
- Why not say hi and draw attention to your PR in our telegram channel?