Welcome to the Supercharging Solana dApp Development workshop! This repository contains materials and code examples to help you explore the rich ecosystem of tools available for Solana dApp development.
This project was generated using npx create-solana-dapp
with the following options:
- Framework: Next.js
- Styling: TailwindCSS
- Template: Basic Project
- Overview of Solana dApp Development
- Where to start from
- Useful websites and tools
- What is the workflow of Solana dApp development
- Developer Tools and Their Use Cases
- Frameworks
- Testing
- Monitoring
- FE Integration
- Code Quality
- Hands-On Demos
- Switching between GitHub branches for each tool.
- Highlighting Zest for code coverage.
- Solana Playground: Quick prototyping and experimentation.
- Anchor Framework - For programs (smart contract) development.
- Bankrun - Modern testing for Solana programs.
- Metaplex SDK - Tools for NFTs and marketplaces.
- Helius API - Real-time monitoring and transaction indexing.
- Solana Wallet Adapter - Simplified wallet integration.
- Zest - Code coverage for Solana projects.
The slides for the workshop can be found in the slides directory.
Each branch in this repository contains a ready-to-use example with readme for the respective tool. Use the following branches:
demo-solana-playground
: Example using the Solana Playground.demo-anchor
: Example using the Anchor framework.demo-bankrun
: Testing Solana programs with Bankrun.demo-metaplex
: NFT minting and marketplace setup.demo-wallet-integration
: Wallet Adapter integration.demo-monitoring
: Using Helius API for monitoring.demo-zest
: Generating code coverage reports with Zest.
-
Node v18.18.0 or higher
-
Rust v1.77.2 or higher
-
Anchor CLI 0.30.1 or higher
-
Solana CLI 1.18.17 or higher
git clone https://github.com/ochikov/supercharging-solana-dapps.git
pnpm install
pnpm dev
This is a Solana program written in Rust using the Anchor framework.
You can use any normal anchor commands. Either move to the anchor
directory and run the anchor
command or prefix the command with pnpm
, eg: pnpm anchor
.
Running this command will create a new keypair in the anchor/target/deploy
directory and save the address to the Anchor config file and update the declare_id!
macro in the ./src/lib.rs
file of the program.
You will manually need to update the constant in anchor/lib/basic-exports.ts
to match the new program id.
pnpm anchor keys sync
pnpm anchor-build
pnpm anchor-localnet
pnpm anchor-test
pnpm anchor deploy --provider.cluster devnet
This is a React app that uses the Anchor generated client to interact with the Solana program.
Start the web app
pnpm dev
Build the web app
pnpm build