Repository map

Documentation

This page is a README-style overview of the Panorama-named repositories: what each codebase is responsible for, which folders matter, and how the market stack ties ingestion, proofs, verification, and settlement together. For field-level API detail, use the linked repo files (LOCAL_STACK.md, SERVICES_API.md).

What "Panorama Protocol" means in these repos

Public messaging (this landing site) describes a privacy-oriented programmable ad network: permissionless participation, verifiable impressions, and settlement-friendly attribution. The implementation spine for that story today lives primarily in panorama-protocol-market-main: a Next.js marketplace UI, a Node market-api, workers for proofs and settlement, a verifier, optional RISC Zero proving, a publisher SDK, and shared types so the same event shapes flow from ingestion through to settlement records.

panorama-protocol-dash-main is the companion operator / campaign surface (legacy React subtree). panorama-protocol-saas-main is a Next.js starter intended to grow into customer-facing SaaS (auth, dashboards, integrations) — it is not yet the full product by itself. The two public site repos (this Next app and Expo panorama-website-main) can diverge in copy; treat production panoramaprotocol.com as canonical for external messaging unless you intentionally unify Expo content.

How the pieces work together

At a high level, traffic and data move from publishers and users into the market API, through a proof pipeline, into verification and settlement intents, while humans use the marketplace UI or dashboard to configure campaigns and inspect outcomes.

Publisher / site (publisher-sdk) │ signed impression · click events ▼ market-api :4010 ──► SQLite data.sqlite (offers, events, proof jobs, intents, campaigns) │ │ proof-worker polls pending jobs ▼ proof-worker ──► risc0-prover :4020 (optional) ──► verifier-api :4011 │ │ │ verified proof │ strict checks (deterministic + RISC0 lanes) ▼ ▼ market-api (state updates) ◄──────────────────────────┘ │ ├──► settlement service (chain adapter; dryRun default) │ └──► optimizer-agent (campaign pacing / budget actions)

Correlation IDs are propagated across ingestion → proof → verifier → settlement → attribution so a single user-visible action can be traced in logs and SQLite rows (LOCAL_STACK.md in the market repo documents this explicitly).

Typical roles

Repository quick reference

Marketing & public sites

RepositorySummary
panorama-protocol-landingRole: Canonical marketing story for Panorama (hero, pillars, long-term outlook) plus this documentation page and global nav. Stack: Next.js 14, static-friendly routes (/, /docs). Deploy: point production domain here when panoramaprotocol.com should match this tree. Together with market: explains the protocol; does not run ingestion or proofs — it links readers to GitHub and to the market repo for implementation detail.
panorama-website-mainRole: Separate public site built with Expo for web. Run: npm run web; static export to web-build per README. Together with landing: may use different headline and body copy (storage / DID framing vs ad-network framing). Reconcile deliberately if both remain public.

panorama-protocol-market-main (core stack)

Repository: panorama-protocol-market-main. This is the richest Panorama repo: it implements the loop from wallet auth and offers through event ingestion, proof generation, cryptographic verification, and settlement intents, with SQLite as the default persistence layer.

Layout (where to look first)

Services (ports & responsibilities)

Packages

Local development

Full stack (recommended): from repo root, .\scripts\dev-stack.ps1 (Windows) or docker compose up then run the frontend from PANORAMA-market-develop as described in LOCAL_STACK.md. Expect marketplace at http://localhost:3000 and API at http://localhost:4010.

Frontend without full auth loop: set NEXT_PUBLIC_DEV_BYPASS_AUTH=true per README so nonce/verify is bypassed for UI work; protected offer calls are stubbed in that mode.

Authoritative docs in repo: README.md (structure and quick commands), LOCAL_STACK.md (architecture, env vars, E2E demo sequence), SERVICES_API.md (HTTP surface reference).

Dashboard & SaaS

RepositorySummary
panorama-protocol-dash-mainRole: Web dashboard for operators working alongside the marketplace — campaign, reporting, or internal tooling angles (see in-app routes). Code: PANORAMA-dash-develop/ is Create React App + React; root is a thin Next wrapper. Run: cd PANORAMA-dash-develop, npm install, npm run start:local. Together with market: same protocol domain, different UX surface; typically talks to the same or related APIs depending on how you wire environments in your deployment.
panorama-protocol-saas-mainRole: Future-facing SaaS portal starter (Next.js 14, React 18, TypeScript). README states auth, dashboards, and integrations are expected to evolve — use it as the shell for customer onboarding, billing UI, or multi-tenant protocol management once you define those flows. Together with market: not a substitute for market-api; it would orchestrate or present data that ultimately still flows through the market stack or chain adapters you configure.

Minimal end-to-end sequence (from LOCAL_STACK)

When everything is running locally, the market repo documents this happy path to validate wiring:

  1. Connect wallet in the marketplace UI.
  2. Sign the nonce challenge; local verify issues a JWT (skipped in dev bypass mode).
  3. Create an offer via authenticated API routes.
  4. Emit an SDK impression event (e.g. demo script) into ingestion.
  5. Proof worker completes verification and creates a settlement intent.
  6. Settlement service marks the intent settled via the configured adapter (dryRun by default).
  7. Optimizer agent writes campaign actions for active campaigns.
  8. Confirm correlation IDs line up across event, proof, and settlement records.

Other COMMENTZRUS products (Streamy, Comment Protocol, shared contracts) live in their own repositories; they are intentionally out of scope on this Panorama-focused page — see their READMEs for cross-ecosystem bridges.

Back to homeCOMMENTZRUS on GitHub