@buildnimbus/sdk · v0.1.0

The access layer.

The engine that verifies every Totym community is yours as a drop-in SDK. Gate a page, a component, or a single word by what a wallet holds. Verification runs on the server; a balance the client reports is never trusted.

npm install @buildnimbus/sdk
  • ZERO RUNTIME DEPENDENCIES
  • SERVER-SIDE VERIFICATION
  • SOLANA · BASE · ETHEREUM
  • SIX PUBLIC ENDPOINTS
  • PUBLISHED ON NPM
The primitive

Everything the builder does, in one tag.

One component. It asks the server what a wallet holds, and renders accordingly. The blockchain is the database; the component is the interface.

tsx
import { NimbusGate } from "@buildnimbus/sdk";

<NimbusGate mint="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v">
  <PromoCode />
</NimbusGate>

Fails closed — loading, errors, a disconnected wallet and a misconfigured gate all render the locked state, never the content.

Granularity

Site. Page. Component. Word.

The primitive does not change. Only the scope does.

SiteThe whole application behind one gate. Every route, one verification.
PageA single route. Research, signals, course content — holders only.
ComponentA table, a chart, a feed. Gate the parts that matter; leave the rest open.
WordA promo code. An address. One string. The whole thesis in one tag.
Gate styles

Three ways to hold the door.

The same gate, three locked states. Switch the style and simulate a holder — this is the component, not a picture of it.

RENDERED · MASKEDHold the required token to keep reading.

The opening reads; the rest dissolves at fadeAt (60% by default). The text is still in the page source — fade is a teaser, not protection.

tsx
<NimbusGate tier="holder" style="fade" fadeAt="60%">
  <HolderNote />
</NimbusGate>

The opening reads; the rest dissolves. A teaser, and a teaser only — the text is rendered, so a non-holder can read it out of the page source.

Fade and blur are presentation, not protection

You cannot fade what was never drawn, so both render their children. Anything genuinely secret is fetched from a server route that verifies again — whatever style wraps it.

The surface

Eleven exports. That is the whole API.

Everything @buildnimbus/sdk@0.1.0 ships, in full. Nothing here is planned, deprecated or partial.

The exported API of @buildnimbus/sdk version 0.1.0.
ExportWhat it does
NimbusProviderWraps the app. Holds config, the connected wallet and the cache.
NimbusGateGates its children. block · fade · blur.
NimbusTierResolves the highest qualifying tier. .Match and .None select the branch.
NimbusWallThe default locked state — message and a buy link.
NimbusButtonConnect, for either wallet ecosystem.
useNimbusAccessThe raw access state for a query.
useNimbusTierThe qualifying tier name, or null.
useNimbusWalletThe connected wallet and its ecosystem.
defineConfigTypes a config object. Communities, tiers, chains.
detectChainSolana-native or EVM-native, from the address shape.
clearCacheDrops the 30s access cache. For after a wallet switch.
Public API

The verification engine, exposed.

Every check the SDK makes goes through one of six GET endpoints. They carry CORS headers, so anything in a browser can call them — and they are the same six Totym itself runs on.

The six public CORS-enabled endpoints.
EndpointReturns
/api/check-accessGET · SolanaToken or NFT balance check
/api/check-access-evmGET · Base · EthereumERC-20 / ERC-721 balance check
/api/token-metadataGET · SolanaName, symbol, logo, supply
/api/token-metadata-evmGET · EVMToken metadata
/api/holder-countGET · SolanaVerified holder count
/api/profileGET · BothWallet identity · ENS · .sol

30-second client cache · in-flight requests deduplicated · fails closed

Dogfooded

We ship on our own primitive.

Every community, every gate, every course video on Totym goes through the same six endpoints you would call. There is no private path and no internal API — if the SDK cannot do it, neither can we.

The vendor building on the primitive is the only honest proof that the primitive is enough.

Get started

Gate your first component in five minutes.

npm install @buildnimbus/sdk