Skip to content

Web App

The Registry web app is the public-facing surface where minted RIKs are browsed. It lives at app.freecodefund.xyz and is implemented as a React + Vite SPA backed by the Registry API.

Source: apps/web/ in freecodexyz/registry.

In active development

The app is being actively shaped. The pages below describe the current state at the time of writing; the public beta on Base Sepolia will follow.

Stack

LayerChoice
FrameworkReact 19, Vite
DataTanStack Query against the Registry API
WalletWagmi + Viem
AuthSign-In With Ethereum (SIWE) over the API's /auth endpoints
UI primitives@freecodexyz/ui
Build targetStatic site served from dist/

What it shows

The two main surfaces:

Repositories table

A compact, scannable view of every indexed registration. Columns include:

  • Repository (GitHub full_name, with link).
  • Primary language.
  • Star count.
  • Registrant (Ethereum address; truncated).
  • Registered-at timestamp.

Sorting:

  • registered_at_desc (default)
  • registered_at_asc
  • stars_desc

The list paginates and supports filtering by language. New registrations stream in over SSE, so the table updates live without a reload.

Repository details drawer

Clicking a row opens a side drawer with:

  • Full GitHub metadata (description, full URL, owner username, language, stars).
  • Chain-side metadata (block number, transaction hash, registry contract address, chain ID).
  • Direct links to the GitHub repo and the chain explorer.

Wallet & auth

Connecting a wallet is optional for browsing but required for any gated action.

  • The user connects through Wagmi.
  • The app fetches a SIWE nonce from the API.
  • The user signs the SIWE message in their wallet.
  • The app posts the signed message to the API, which sets a session cookie.

The same session is then used for any token-gated endpoint. See Access Gating.

Running locally

From the repo root:

bash
CONTRACT_ADDRESS="0xc03a52cD0EB2d5d456e64bda0557Db04608d1eac" RPC_URL="https://base-sepolia-rpc.publicnode.com" CHAIN_ID=84532 pnpm dev

This starts the API, the indexer, and the web app concurrently. The web app defaults to http://localhost:5173 (which is the only origin the API allows out of the box).

To run just the web app:

bash
pnpm --filter @freecodexyz/web dev

You'll still need the API running for it to render anything.

Continue

Released under the Apache 2.0 License.