Thanks for your interest in contributing! This guide covers everything you need to get up and running.
- Node.js 22+
- npm
git clone https://github.com/dev-jodee/castaway.git
cd castaway
npm install
cp .env.example .env.local
npm run devOpen http://localhost:3000.
SOLANA_RPC_URL defaults to the public Solana mainnet RPC in .env.example. If you have a preferred RPC provider, update .env.local before running the app.
This is the most common contribution and the easiest place to start.
Presets live in data/presets.json. Each entry follows this shape:
{
"name": "My Program",
"programId": "base58AddressHere...",
"description": "Short description of what the program does",
"category": "DeFi"
}Rules:
programIdmust be a valid Solana base58 address- The program must have a published on-chain Solana IDL compatible with the app — test it first by pasting the address and clicking "Fetch IDL"
categoryshould be one of:DeFi,Staking,NFT,Governance— open an issue first if you want to propose a new categorydescriptionshould be one sentence, no trailing period
Steps:
- Fork the repo
- Create a branch:
git checkout -b preset/program-name - Add your entry to
data/presets.json(alphabetical order within each category is preferred but not required) - Test it locally — fetch the IDL and generate a client to make sure it works end to end
- Open a PR with the title:
feat: add [Program Name] preset
- TypeScript everywhere — no
anyunless unavoidable - Prettier is configured — run
npx prettier --write .before committing - ESLint is configured — run
npx eslint .to check - Verify production readiness with
npm run build
CI will enforce both on every PR.
- Make sure
npm run buildpasses locally - Keep PRs focused — one feature or fix per PR
- Write a clear description of what changed and why
- A maintainer will review and merge
Open a GitHub issue with:
- Steps to reproduce
- Expected vs actual behaviour
- Browser and OS (for UI bugs)
- Program ID (for IDL fetch / generate bugs)
By contributing you agree that your contributions will be licensed under the MIT License.