/** * Curated list of Angor supporters shown on /supporters. * * Deliberately opt-in: only list people/organisations who are happy to be * shown. Discover the raw list (privately) with: * node ~/.config/skatespots/angor/angor-backers.mjs * → writes ~/.config/skatespots/angor/work/backers.json (npub + txid). * The amount = the sum of the investment transaction's Taproot stage outputs * (per-backer `amount` = 99,000 sats here; total matches the app's "0.00198 BTC"). * * Entries: * - people: { npub, amount } → links to their profile; add `name` to override * - shops / orgs: { name, logo, url, amount } (logo: PNG/WebP, transparent, ≥200px) * - hide identity: { anonymous: true, note } * * ⚠️ Don't add someone without their consent — a backer's npub + "backed this * project" is new, linkable information even though the key is public. */ export interface Backer { /** Display name; falls back to "Anonymous supporter". */ name?: string; /** Nostr profile — renders a skate placeholder + links to /. */ npub?: string; /** Logo for a shop/brand/org (shown instead of the placeholder). */ logo?: string; /** External link (used when there is no npub). */ url?: string; /** Investment transaction id — renders a verifiable "on-chain" chip. */ txid?: string; /** Amount contributed, in satoshis. */ amount?: number; /** Contribution time (unix seconds). */ at?: number; /** List without revealing name/logo/npub (privacy opt-out). */ anonymous?: boolean; /** Small line under the name, e.g. "Founding backer". */ note?: string; } export const BACKERS: Backer[] = [ { npub: 'npub15q3ekfxdvzuc9nhhyh2yv7lwtnfagurllc9rkkrypt40d303jsjsdfujeu', txid: '4f95d18ff44a86e8302d923f53fe3777c52236ec087b0d374b8e9566995e1bcc', amount: 99000, at: 1780930859, note: 'Founding supporter', }, { npub: 'npub1t5yjluyvxatlmmcxccv7tdppmp4ae0j850k63323t7j0fe4lsqlsp7mfyl', txid: '5dbf872fd8f02ecf2b534857b0613e880a021478c6e8e6483c774e95d2ddc565', amount: 99000, at: 1780644182, note: 'Founding supporter', }, ]; /** Total raised across the listed supporters, in satoshis. */ export const BACKERS_TOTAL_SATS = BACKERS.reduce((sum, b) => sum + (b.amount ?? 0), 0); export type SupporterTier = 'supporter' | 'patron' | 'legend'; /** * Tier by amount. The 100,000-sat boundary is the project's Angor penalty * threshold: at/below it a contribution is donation-like, above it's an * investment with a recovery path — so the tiers mirror the two rails honestly. */ export function tierOf(sats: number | undefined): SupporterTier { if (!sats || sats < 100_000) return 'supporter'; if (sats < 1_000_000) return 'patron'; return 'legend'; }