Practical overview
When it fits
Use it when learning or prototyping how an Express GraphQL service can connect to a Solidity contract, particularly for balance queries and donation mutations.
Who it is for
- Developers exploring GraphQL interfaces for Ethereum smart contracts.
- Builders prototyping a donation dApp backend with Solidity and Web3.
Documented uses
- Query a smart-contract balance through a GraphQL server.
- Explore a donation mutation connected to a Solidity contract.
- Start a local smart-contract example using Ganache, Remix and MetaMask.
Requirements & limits
- The documented stack is Node, Express, Web3, GraphQL, Solidity and ganache-cli.
- The README requires a MetaMask account and describes Ganache as the local Ethereum test network.
- The setup uses Remix's injected Web3 environment and starts the project with
npm start. - The repository is public and specifies an MIT license.
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Set up the local GraphQL contract example
Prepare and start the repository's documented local example with its Donation.sol contract and injected Web3 environment.
Before you start
- Node.js and npm
- MetaMask installed with an account registered
- ganache-cli installed globally with
npm i -g ganache-cli - Remix IDE
Steps
Clone the repository and run the command below in its directory.
npm installIn Remix, create a file and paste in the repository's
Donation.solcode.In Remix's Run tab, select the
injected web3environment.Run the command below in the project directory.
npm start
Expected outcome
The project is started locally with the documented contract and injected Web3 setup.
Guide limitations
- The README documents setup and startup, but not a production deployment procedure.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 16 October 2026
- Original website title
- redacademy/ethereum-graphql · Official homepage title · retained in its source language

