Signet is a verifiable developer career record built on Stellar/Soroban. Developers link their deployment wallets to a profile; on-chain attestations bind wallet → identity; an indexer pulls every contract they've deployed along with its activity. Public profiles become the canonical record of a developer's smart-contract career.
Demo profiles use synthetic data on Stellar testnet — generated, unowned accounts — so no real wallet's activity is attributed to an invented persona. Production renders real mainnet activity bound on-chain via the Identity Registry.
| URL | Description |
|---|---|
/ |
Landing page with "See it in action" section |
/p/aquawolf |
Demo profile — Blend-style collateral ops (testnet, synthetic) |
/p/sorobuilder |
Demo profile — Soroswap-style DEX swaps (testnet, synthetic) |
/p/stellardev |
Demo profile — USDC token transfers (testnet, synthetic) |
/how-it-works |
How Signet works + what's coming |
- Landing page — polished marketing page with animated sections and a live "See it in action" demos block linking to the 3 profiles
- Demo profiles at
/p/{handle}— server-rendered (SSG) profile pages reading synthetic testnet operation data fromapps/web/public/data/{handle}.json; clearly labelled as demo data - How it works page — explains the thesis, what's live, and what's coming
- Middleware routing —
/p/and/how-it-workspass through; handles validated; legacy/profile/redirects to/p/ - Production data path — the same UI renders real Horizon API data on mainnet once the indexer + registry are live (
safeDbProfilealready wires the DB-with-static fallback)
- On-chain Identity Registry — a real Soroban contract (
packages/contracts/identity-registry) binds a wallet to a handle via a signedclaim; ownership is enforced byrequire_auth. 13 unit tests, builds to wasm. - Wallet connect + claim flow —
Connect wallet/Claim your handleuse Stellar Wallets Kit and submit the on-chain claim (apps/web/lib/{wallet,registry}.ts). Until the registry's contract id is configured (NEXT_PUBLIC_IDENTITY_REGISTRY_ID), the claim surfaces an honest "Phase 2" message. - Real API + SDK — tRPC
profile.byHandle/profile.list/health;@signet/sdkfetches them. Both covered by tests. - CI gates lint · typecheck · test · build, plus a Rust contract job.
- Deploy the registry to testnet/mainnet and set
NEXT_PUBLIC_IDENTITY_REGISTRY_IDto make claims live. - Run the indexer against a Postgres instance to populate full deployment/activity history;
/palready has a DB-with-static-fallback loader (safeDbProfile). - Self-sovereign bindings replace the curated
profiles.jsonmapping once claims are live. - Developer dashboard (
/app/*) — currently an honest read-only preview pending wallet auth. - Reputation scoring — attestations, TVL tracking, incident records.
git clone <repo> signet && cd signet
pnpm install
# Run just the web app (no database needed for the demo routes)
pnpm --filter @signet/web devVisit http://localhost:3000 for the landing page.
Visit http://localhost:3000/p/aquawolf for the first demo profile.
Requires Node 22+. Fonts (
IBM Plex Sans/Mono) load via a browser-side@importinglobals.css(notnext/font), so the build never blocks on font downloads.
┌─────────────────────────────────────────────────────┐
│ apps/web (Next.js) │
│ /p/{handle} — canonical profile (static + DB-opt) │
│ /profile/{handle} — legacy alias → redirects to /p │
└───────────────────┬─────────────────────────────────┘
│
┌─────────▼─────────┐
│ apps/indexer │ Long-running worker
│ (TypeScript) │ polls Horizon API,
│ │ writes to Postgres
└─────────┬─────────┘
│
┌─────────▼─────────┐
│ packages/db │ Prisma schema
│ (PostgreSQL) │ Profile, Wallet,
│ │ Contract, Snapshot
└───────────────────┘
Implemented:
packages/contracts/identity-registry — Soroban claim contract (13 tests)
packages/sdk — External SDK (fetches the tRPC API)
| Path | Purpose |
|---|---|
apps/web |
Next.js App Router + tRPC API |
apps/indexer |
Long-running TypeScript indexer worker |
packages/contracts |
Soroban Rust contracts |
packages/db |
Prisma schema + generated client |
packages/sdk |
External SDK for integrators |
packages/types |
Shared TypeScript types |
packages/ui |
Shared React components |
infra |
Local dev infra (Docker Postgres) |
| Command | Description |
|---|---|
pnpm dev |
Run all apps via Turborepo |
pnpm --filter @signet/web dev |
Run web app only (no DB required for demo) |
pnpm --filter @signet/web build |
Build web app |
pnpm --filter @signet/web typecheck |
Typecheck web app |
pnpm db:up / db:down |
Start / stop local Postgres |
pnpm db:migrate |
Run Prisma migrations |