Sol.College

Full lesson

solstage-web

Solstage Web

What it does

From the project README:

Welcome to Solstage, a platform about NFTs management and filtering categories display.
Original
airicyu/solstage-web
SuperStack fork
Blockchains/solstage-web @ 28fe02d
Stars
0
Last push (original)
2024-04-07
Languages
TypeScript, JavaScript, CSS, HTML
Detected stack
Metaplexweb3.js
Categories
Other
Licence
MIT

Architecture

44 source files. By extension: .tsx ×40, .js ×2, .ts ×2.

Top-level directorySource files
src41
(root)3

✅ Operational, verified 2026-11-02 Tested on 2026-11-02: full log results.json

Build it yourself: step-by-step guide

Every command below was run on 2026-11-02 by tests/run_fork.py against the pinned commit, and the results come from that run. The full output is in the committed log.

1. Prerequisites (versions we tested with)

2. Clone at the tested commit

git clone https://github.com/Blockchains/solstage-web.git && cd solstage-web
git checkout 28fe02dcd83a550a15552be6464abea6b5892c78

3. Configure

No environment file is needed.

4. Install dependencies

DirectoryCommandResultTime
.npm install --no-audit --no-fund --legacy-peer-deps✅ pass15s

5. Build

DirectoryCommandResultTime
.npm run build✅ pass20s

7. Deploy to a local validator

8. Run and exercise it

DirectoryCommandResultTime
.bash /workspace/sol-college/repo/tests/serve_probe.sh 3102 / npx vite preview --port 3102 --strictPort✅ pass2s

Extend it

  1. Add an integration test that runs the main flow end to end and asserts every account state change.
  2. Add a negative test: call each instruction with the wrong signer or account and check that it fails.
  3. Make the frontend read the cluster from an env var, deploy it to GitHub Pages and point it at your devnet program.
  4. Wire the build into CI by copying this site's verify-forks workflow.

Open the dapp

Open the dapp The fork's own Vite/React frontend, with its built-in cluster switch (devnet / mainnet). It reads wallets and NFTs; it has no on-chain program of its own. Connect your own wallet; every transaction is signed in your wallet. Use devnet with free SOL from faucet.solana.com. Mainnet uses real tokens: alpha software, high risk.

Built with dapps/static_build.sh solstage-web.

Key code, explained

Excerpts chosen automatically where the code uses the most Solana concepts, pinned to the fork's commit.

airicyu/solstage-web · src/app/swap/swap-shdw.tsx L97–120 @ 28fe02d · MIT · original
   const addressLookupTableAccounts: AddressLookupTableAccount[] = [];   addressLookupTableAccounts.push(    ...(await getAddressLookupTableAccounts(addressLookupTableAddresses))  );   const latestBlockhash = await connection.getLatestBlockhash();  const messageV0 = new TransactionMessage({    payerKey: wallet.publicKey,    recentBlockhash: latestBlockhash.blockhash,    instructions: [      PRIORITY_FEE_IX,      ...setupInstructions.map(deserializeInstruction),      deserializeInstruction(swapInstructionPayload),      deserializeInstruction(cleanupInstruction),    ],  }).compileToV0Message(addressLookupTableAccounts);   const transaction = new VersionedTransaction(messageV0);  const tx = await wallet.sendTransaction(transaction, connection);   await connection.confirmTransaction(    { signature: tx, ...latestBlockhash },
  1. Line 104 const latestBlockhash = await connection.getLatestBlockhash();: Fetches a recent blockhash. Transactions expire if it gets too old.
  2. Line 117 const tx = await wallet.sendTransaction(transaction, connection);: Submits the signed transaction to the cluster.

How to run, build and test

These commands come from the repo's own manifests (package.json scripts, Anchor.toml, Cargo, go.mod, Makefile). Check the README for prerequisites and environment variables.

DirectoryCommandRuns
.npm run devvite --port=3000
.npm run buildtsc && vite build
.npm run linteslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0

What you could build from it