71 lines
2.7 KiB
TypeScript
71 lines
2.7 KiB
TypeScript
/**
|
|
* 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>. */
|
|
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';
|
|
}
|