SignalAF · SigRank web app
Browse AI operator token telemetry, explore personal profiles, and compare token-cascade metrics on signalaf.com.
[CI]
[npm]
[License: MIT]
Live site · Leaderboard · Methodology · CLI & MCP · Local setup
This repository contains the Next.js application: the leaderboard homepage, operator profiles, Compare, Hall of Signal, editorial pages, accounts, billing, and server APIs.
Explore the site
Some features are gated; see Feature flags. This README describes the source tree, not a promise that every optional integration is configured on every deployment.
Get your own results
You do not need to clone this application to use it. Run the CLI/MCP package:
Sign in at signalaf.com to create a connect code. Claims for profiles from the original board require ownership verification through [email protected].
What is measured
Four token pillars feed the cascade: input, output, cache-write, and cache-read. Yield is calculated as:
The server verifies and re-scores submissions. Leverage, Velocity, SNR, and 10xDEV describe token-processing patterns; they are not measures of model quality, work quality, productivity, or business outcomes.
Upsilon is the measurement engine; SigRank is the public leaderboard and proof surface on SignalAF. Protocol semantics belong to TTEOP. See the methodology and wiki for definitions and limitations.
Ranked telemetry does not require prompt text, responses, or source code. Submissions also carry identity, device/signature, platform, and report metadata; see the CLI privacy details.
Stack
- Next.js 16 App Router, React 19, TypeScript (strict)
- Tailwind CSS 3
- Supabase (Postgres, Auth, Realtime)
- Stripe Checkout, Billing Portal, webhooks
- Upstash Redis for rate limiting (Supabase Postgres fallback)
- zod, Node test runner, Vitest, Playwright
Local setup
Requires Node 22.x (engines in package.json, .nvmrc).
Unconfigured local development can use snapshot or demo data on supported read paths. This is not live telemetry. Live board data, authentication, signed writes, and billing need their corresponding services configured. A configured database with no matching records returns an empty result rather than a fabricated operator history.
Scripts
Before opening a PR, run npm run verify and npm run build.
Environment
Copy .env.example to .env.local. It lists every variable with notes. Never commit values. Production values live in Vercel environment variables.
Feature flags
lib/features.ts defines the flags. All gated flags default to off and accept 1 or true.
Database and migrations
Migrations live in supabase/migrations/. Use that directory and npm run db:parity for the current schema and remote-ledger status rather than relying on a hard-coded migration count. Apply required migrations before deploying code that depends on them; review the pending SQL and target project first.
Row Level Security policies, seed data, and security tests live in supabase/. See supabase/README.md to run your own instance.
Project map
Development conventions:
- Pages are server components by default. Add
'use client' only for hooks, handlers, or browser APIs.
- Keep RS.xx scoring configuration out of client code.
- Avoid random values and wall-clock reads at module scope.
Deployment
Pushes to main deploy to Vercel (vercel.json). A daily cron calls /api/cron/recompute. Set environment variables in Vercel. An OpenNext Cloudflare path exists (npm run preview, npm run deploy, wrangler.jsonc).
Security
Report vulnerabilities privately. Email the maintainer or open a private GitHub security advisory. Do not file public issues for vulnerabilities. See SECURITY.md.
Related
Contributing
Open an issue with repro steps and your Node version. For code changes, branch from main, keep the change small, run npm run verify, and open a PR. See Contributing and the Code of Conduct.
License
MIT. See LICENSE.