Skip to content

IQCoreTeam/iq-chan

Repository files navigation

BlockChan

A fully decentralized imageboard built on Solana. All posts, threads, and boards are stored permanently on-chain using the IQ Labs SDK. No servers hold your data — just Solana transactions and a read-only gateway cache.

Live: blockchan.xyz

How It Works

  • Posts are Solana transactions written to on-chain IQDB tables
  • Reads go through an IQ Gateway (HTTP cache layer)
  • Writes go directly to Solana RPC via wallet (Phantom, Backpack, etc.)
  • Frontend is a static Next.js app — can be hosted anywhere or deployed permanently on-chain

The gateway is optional. Anyone can run their own. If all gateways go down, the data is still on Solana and recoverable by spinning up a new gateway.

Prerequisites

  • Node.js 18+
  • npm
  • A Solana wallet browser extension (Phantom, Backpack, Solflare, etc.)

Quick Start

git clone https://github.com/IQCoreTeam/iq-chan.git
cd iq-chan
npm install
cp .env.example .env
npm run dev

Open http://localhost:3000. Connect your wallet and start posting.

Configuration

Variable Required Default Description
NEXT_PUBLIC_RPC_ENDPOINT No https://api.mainnet-beta.solana.com Solana RPC for writes. A paid RPC (Helius, Quicknode) will be faster

Gateway URLs are set in src/lib/config.ts and can be overridden at runtime in your browser console:

localStorage.setItem("blockchan_gateway", "http://localhost:3000");

Default gateways:

  • https://gateway.solanainternet.com (primary)
  • https://gateway.iqlabs.dev (backup)

The frontend automatically falls back through the list if one is down.

Deployment

On-Chain via Iqoogle (Solana Permanent Web)

Host the entire site on Solana. Served via any IQ Gateway at /site/{manifestSig}.

  1. Clone and install Iqoogle (the IQ app publisher)
  2. Build a static export:
STATIC_EXPORT=1 npm run build
  1. Create out/iqbrowser.json:
{
  "name": "blockchan",
  "version": "2.1.0",
  "description": "On-chain imageboard on Solana",
  "root": "iqchan",
  "runtime": "static",
  "start": ""
}
  1. Publish (needs a funded Solana wallet):
cd out
npx tsx /path/to/Iqoogle/src/iqbrowser/index.ts publish

Arweave (Permanent)

The site lives on Arweave forever, served through any Arweave gateway.

npm i -g arkb
STATIC_EXPORT=1 npm run build
arkb deploy out/ --wallet /path/to/arweave-wallet.json --auto-confirm

Access at https://arweave.net/{manifestId}.

Static Export (Any Host)

STATIC_EXPORT=1 npm run build

Output in out/. Upload to any static host, CDN, or IPFS.

Standard Next.js

npm run build
npm start

Works on Vercel, Railway, or any Node.js host.

Running Your Own Gateway

The frontend needs at least one IQ Gateway for reads. Run your own:

git clone https://github.com/IQCoreTeam/iq-gateway.git
cd iq-gateway
bun install
cp .env.example .env
bun run dev

Then point BlockChan at it:

localStorage.setItem("blockchan_gateway", "http://localhost:3000");

See the gateway repo for Docker, Akash, and production deployment.

Architecture

Browser (Next.js static app)
    |
    ├── Reads → IQ Gateway (cache) → Solana RPC → On-chain data
    |
    └── Writes → Solana RPC (via wallet) → IQ Labs Contract
  • All data lives in IQDB tables on Solana
  • Gateway is a stateless read cache (memory → disk → chain)
  • Multiple gateways can serve the same data independently
  • No backend server — the gateway is replaceable

Stack

  • Next.js 15 / React 19 / TypeScript
  • IQ Labs SDK
  • Solana Wallet Adapter

Links

About

iqchan-website

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors