STACK · TECHNICAL DISCLOSURE

How this is built.

PointCast is a static site compiled once and served from the edge. This page documents every layer — runtime, content, on-chain, agent, team — so agents can reason about the system and humans can trust it.

RT

Runtime

Static site compiled once, served from the edge. No server processes, no databases — state lives in files + Cloudflare KV.

  • Astro 6.1 static-site framework

    Islands + file-based routing + content collections keep the Blocks primitive expressible without a CMS.

  • Cloudflare Pages static hosting + edge functions

    Global edge, Pages Functions for the middleware (agent-mode UA sniff, presence, metadata endpoint), and KV for presence counters.

  • Vite bundler

    Ships with Astro. Zero config once the Inter/JetBrains Mono variable fonts are wired via @fontsource-variable.

  • Blocks schema is type-checked, channel codes are a union type, no drift between docs and code.

CT

Content

Every block is a JSON file in src/content/blocks/. The BLOCKS.md schema is the source of truth; the repo is the CMS.

  • getCollection() gives schema-validated blocks at build time. Zero runtime content lookup.

  • Markdown long-form body format

    Body text on READ-type blocks; posts/ directory for long-form Cowork essays.

  • Inter (Variable) sans-serif display + body

    Self-hosted via @fontsource-variable/inter. No Google Fonts request.

  • Self-hosted variable. Every BlockCard header + footer line uses it; kickers, IDs, timestamps.

TZ

On-chain (Tezos)

Free mainnet FA2 + planned FA1.2 + Prize Cast. Signer keys are throwaways; admin is Mike's wallet post-transfer.

  • SmartPy 0.24 contract language

    Python-flavored Michelson compiler. contracts/v2/*.py → Michelson JSON → originated via Taquito.

  • Taquito 24.2 Tezos JS SDK

    Originates contracts, calls entrypoints, reads storage. Beacon-integrated for wallet-signed ops.

  • Beacon SDK 24.2 wallet connector

    Kukai, Temple, Umami, Altme — one protocol, any wallet. 24.2 required network at DAppClient instantiation, not requestPermissions (a footgun we hit in v4).

  • TzKT indexer + REST API

    Live totalSupply, token metadata, account balances. Polled at build time for /collection, /editions, /now.

  • objkt.com marketplace

    Every Visit Nouns mint surfaces in the collection page. /collect tokens list via objkt CDN.

  • noun.pics CC0 Nouns avatars

    Source for all Noun glyphs on the site. Seed IDs 0-1199; CC0 per nouns.wtf.

AG

Agent layer

Four ways for machines to consume PointCast without scraping HTML.

  • /agents.json discovery manifest

    One request → every endpoint, contract, channel, type, agent-mode spec. Aliased at .well-known/agents.json.

  • JSON Feed v1.1 standards feed

    Every block in jsonfeed.org v1.1 format. Most modern readers speak it.

  • JSON-LD (schema.org) inline structured data

    Every page carries JSON-LD: CreativeWork on blocks, CollectionPage on indexes, WebApplication on /battle.

  • Stripped HTML mode UA-based CSS/JS strip

    ai:* User-Agents + GPTBot/ClaudeBot/etc get CSS and JS removed at the edge via HTMLRewriter. ~12% payload savings.

  • llms.txt LLM summary

    Emerging convention: a markdown doc summarizing the site for LLMs.

TM

Team

Multi-agent workflow. Mike is the director; the rest are hands.

  • Mike Hoydich director · strategy · content · approvals

    Writes the dispatches, makes brand/aesthetic/GTM calls, approves merges + contract deploys.

  • Claude Code primary engineer

    Architecture, schema, rendering, routing, contracts, deploys. Default to sonnet; 1M-context for multi-hour sessions.

  • Codex specialist reviewer

    Code review before main merges; alternative UI passes; second opinions. Medium reasoning, serial runs — xhigh concurrent hangs observed.

  • Manus operations + computer-use

    Behind-login ops: deploy settings, DNS, objkt collection admin, end-to-end mint testing as a real user.

NO

Deliberately not using

Things we skipped on purpose. Not exhaustive — just the interesting no's.

  • Google Analytics / GA4 no analytics

    Privacy by default. No telemetry, no cookie banners, no fingerprinting. If we add analytics later it will be Plausible or Fathom, first-party, self-hosted.

  • React / Next.js / SPA framework static-first

    Hydrating JSX is overkill for a content site. Astro ships HTML + tiny islands; typical page is under 20KB of JS.

  • WalletConnect / Rainbow Kit Tezos-only wallets

    Beacon is the native Tezos standard. We don't pretend to be multichain.

  • Search-as-a-service client-side search

    /search bakes the index into the page (~6KB). No Algolia, no Meilisearch, no network round-trip.

  • Cookie banner no tracking cookies

    No cookies set by PointCast. Wallets set their own. Nothing to consent to.