Files
dark-lord/lib/shopSellers.ts
drjones 78a071ba02 Harden onion boot flow and deepen site surfaces
Add persistent onion key backup and restore, improve startup resilience, and flesh out the major site verticals with richer navigation, search coverage, and operator documentation.

Made-with: Cursor
2026-04-07 21:35:52 -07:00

86 lines
12 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Fictional marketplace vendors — every shop SKU resolves to one via sellerId + hash fallback.
* Thirty-six+ sellers for a busy vendor hall (synthetic marketplace data).
*/
export type ShopSeller = {
id: string;
/** URL segment: /vendor/{slug} */
slug: string;
/** Public handle */
handle: string;
/** Onetwo sentence pitch */
bio: string;
/** Flair line under the name */
tagline: string;
since: number;
/** Theater stats */
completedSales: number;
rating: number;
/** Busy indicator: “online” lore */
responseMins: number;
specialty: string;
};
export const SHOP_SELLERS: ShopSeller[] = [
{ id: "v1", slug: "sugarrush-vault", handle: "SugarRush_Vault", bio: "Started on bubblegum arbitrage; now runs a neon-lit confection aisle with same-day dead-drop fiction.", tagline: "Sweet logistics, sour opsec jokes", since: 2019, completedSales: 4280, rating: 4.92, responseMins: 14, specialty: "Confections" },
{ id: "v2", slug: "candyman-99", handle: "CandyMan_99", bio: "Greybeard vendor who still hand-writes batch numbers on Mylar; refuses clearnet DMs.", tagline: "Old school drops, new school memes", since: 2016, completedSales: 8912, rating: 4.78, responseMins: 42, specialty: "Confections" },
{ id: "v3", slug: "entropy-corp", handle: "EntropyCorp", bio: "Hardware RNG evangelist selling props that teach students what random actually costs.", tagline: "Noise you can weigh", since: 2020, completedSales: 2104, rating: 4.85, responseMins: 55, specialty: "Hardware" },
{ id: "v4", slug: "ghost-layer-trades", handle: "GhostLayerTrades", bio: "Identity-pack cosplayer; every listing reads like a cautionary fable for journalism labs.", tagline: "Proof-of-personhood theater", since: 2018, completedSales: 1567, rating: 4.88, responseMins: 33, specialty: "Identity" },
{ id: "v5", slug: "neon-apotheke", handle: "NeonApotheke", bio: "Labels everything for rhetoric class only; partners with instructors for debrief worksheets.", tagline: "Inert props, loud disclaimers", since: 2021, completedSales: 3890, rating: 4.71, responseMins: 22, specialty: "Chemicals" },
{ id: "v6", slug: "opsec-omakase", handle: "OpsecOmakase", bio: "Bundles tor-themed desk toys with checklist PDFs; spammed mirror links so you learn verification.", tagline: "Compartmentalized clutter", since: 2017, completedSales: 5022, rating: 4.95, responseMins: 19, specialty: "Security" },
{ id: "v7", slug: "mixer-memory-lane", handle: "MixerMemoryLane", bio: "Sells nostalgia coasters and long threads about tumbler UIs — pedagogy with glitter.", tagline: "Hop jokes, real risk talk", since: 2019, completedSales: 1766, rating: 4.63, responseMins: 67, specialty: "Financial" },
{ id: "v8", slug: "ledger-moth", handle: "LedgerMoth", bio: "Attracted to cold-storage keychains and warm takes on multisig ceremony.", tagline: "Loves ledgers, hates ledger drama", since: 2015, completedSales: 12033, rating: 4.9, responseMins: 28, specialty: "Financial" },
{ id: "v9", slug: "cipherkids-collective", handle: "CipherKidsCollective", bio: "Student co-op listing meme PGP accessories; proceeds fund club pizza (fiction).", tagline: "ASCII armor, Unicode heart", since: 2022, completedSales: 942, rating: 4.55, responseMins: 120, specialty: "Digital goods" },
{ id: "v10", slug: "zero-k-knits", handle: "ZeroKKnits", bio: "Hand-knits proof scarves — wearable ZKP jokes for compsci fashion crimes.", tagline: "Stitch, dont snitch", since: 2020, completedSales: 884, rating: 4.82, responseMins: 48, specialty: "Services" },
{ id: "v11", slug: "patchbay-seven", handle: "Patchbay7", bio: "Audio engineer turned barter poet; swaps studio time for syllabi about copyright friction.", tagline: "TRS snakes & trust anchors", since: 2016, completedSales: 2633, rating: 4.77, responseMins: 36, specialty: "Hardware" },
{ id: "v12", slug: "eu-shift-goods", handle: "EU_shiftGoods", bio: "Time-zone hopping vendor shipping sanitized scandal props for EU privacy curricula.", tagline: "GDPR-themed desk toys", since: 2018, completedSales: 3311, rating: 4.69, responseMins: 51, specialty: "Data Leaks" },
{ id: "v13", slug: "void-cartographer", handle: "void_cartographer", bio: "Maps imaginary nodes onto real cork boards; sells pins, string, and paranoia.", tagline: "Latitude: unknown", since: 2014, completedSales: 9011, rating: 4.93, responseMins: 24, specialty: "Identity" },
{ id: "v14", slug: "saltside-forge", handle: "SaltSideForge", bio: "Printmaker obsessed with microprint pedagogy — everything demilled, everything didactic.", tagline: "Chalcography, not counterfeits", since: 2017, completedSales: 1444, rating: 4.84, responseMins: 73, specialty: "Forgery" },
{ id: "v15", slug: "quiet-bag-trading", handle: "quietBagTrading", bio: "Minimal listings, maximal packing peanuts; teaches less metadata, more mischief.", tagline: "Plain boxes, loud lessons", since: 2021, completedSales: 2109, rating: 4.66, responseMins: 91, specialty: "Confections" },
{ id: "v16", slug: "watchtower-null", handle: "watchtower_09", bio: "Former helpdesk griefer; now sells IR playbooks printed on fireproof-ish paper.", tagline: "Pager-duty poetry", since: 2019, completedSales: 4566, rating: 4.8, responseMins: 31, specialty: "Security" },
{ id: "v17", slug: "neon-sick-labs", handle: "neon_sick_labs", bio: "Biohacker aesthetic without bio samples — gel pours, chalk presses, ethics handouts.", tagline: "Wetware cosplay, dry enforcement", since: 2020, completedSales: 2988, rating: 4.72, responseMins: 44, specialty: "BioEnhancements" },
{ id: "v18", slug: "tor-baby-bazaar", handle: "tor_baby", bio: "First-time vendor energy; over-explains PGP in every package insert.", tagline: "Signed with love & line breaks", since: 2023, completedSales: 511, rating: 4.58, responseMins: 15, specialty: "Digital goods" },
{ id: "v19", slug: "checkout-sigh", handle: "checkout_sigh", bio: "Specializes in cart-abandonment empathy merch — stress balls shaped like loading spinners.", tagline: "One-click zen", since: 2018, completedSales: 6722, rating: 4.74, responseMins: 38, specialty: "Services" },
{ id: "v20", slug: "grid-griefer-wares", handle: "grid_griefer", bio: "Sells fidget friendly exploit desk toys; banned three times, re-listed with better disclaimers.", tagline: "Lag is a lifestyle", since: 2016, completedSales: 8877, rating: 4.61, responseMins: 60, specialty: "Security" },
{ id: "v21", slug: "vendor-pm-me", handle: "VendorPM_me", bio: "Satire vendor whose entire FAQ is about not sliding into DMs without signed clearsigned intro.", tagline: "Inbox closed, mailbox mythic", since: 2017, completedSales: 1922, rating: 4.87, responseMins: 84, specialty: "Identity" },
{ id: "v22", slug: "dead-drop-nine", handle: "dead_drop_9", bio: "Geocache enthusiast selling magnetic tins labeled training dead drops only.", tagline: "Latitude redacted responsibly", since: 2015, completedSales: 5544, rating: 4.9, responseMins: 27, specialty: "Hardware" },
{ id: "v23", slug: "opsec-dad-outfitters", handle: "OPSEC_dad", bio: "Dad jokes × threat modeling; bumper stickers about passphrase rotation.", tagline: "Because I said verify", since: 2014, completedSales: 14002, rating: 4.96, responseMins: 11, specialty: "Security" },
{ id: "v24", slug: "liquidity-lurker", handle: "liquidity_lurker", bio: "Market-maker cosplay: sells LED tickers that only scroll educational disclaimers.", tagline: "Spreads tight, stories wider", since: 2019, completedSales: 3777, rating: 4.68, responseMins: 47, specialty: "Financial" },
{ id: "v25", slug: "v3-only-club", handle: "v3_only_club", bio: "Purist about onion v3 links; mousepads printed with address-length rulers.", tagline: "56 chars or bust", since: 2020, completedSales: 2233, rating: 4.83, responseMins: 29, specialty: "Digital goods" },
{ id: "v26", slug: "signed-or-bust", handle: "signed_or_bust", bio: "Only ships if your key cross-signs their joke manifesto — instructors get a bypass code.", tagline: ".sig or swim", since: 2018, completedSales: 6110, rating: 4.94, responseMins: 18, specialty: "Forgery" },
{ id: "v27", slug: "tails-eight-gb", handle: "tails_8gb", bio: "USB cases with tiny ventilation jokes; bundles Tails release posters (fan art).", tagline: "Live OS, die laughing", since: 2016, completedSales: 9881, rating: 4.76, responseMins: 35, specialty: "Hardware" },
{ id: "v28", slug: "finalize-never-co", handle: "finalize_never_co", bio: "Escrow-education vendor: enamel pins that say multisig first in tiny letters.", tagline: "Early is wrong here", since: 2021, completedSales: 1888, rating: 4.7, responseMins: 52, specialty: "Financial" },
{ id: "v29", slug: "fud-archivist", handle: "FUD_archivist", bio: "Archives sensational headlines as coaster sets — history of panic syllabus tie-in.", tagline: "Primary sources of drama", since: 2017, completedSales: 3055, rating: 4.64, responseMins: 63, specialty: "Data Leaks" },
{ id: "v30", slug: "ui-snob-studio", handle: "UI_snob_studio", bio: "Typography snob selling holographic UI roasts; heatmaps reproduced on mousepads.", tagline: "Pixels with prejudice", since: 2022, completedSales: 1201, rating: 4.59, responseMins: 88, specialty: "Services" },
{ id: "v31", slug: "wallet-scratch-pad", handle: "wallet_scratch", bio: "Paper notebooks for seed-phrase *practice* with nonsense words only.", tagline: "Writes friction, not seeds", since: 2019, completedSales: 4404, rating: 4.81, responseMins: 26, specialty: "Financial" },
{ id: "v32", slug: "btc-fee-woe", handle: "btc_fee_woe", bio: "Therapist-chic stickers about mempool grief; bundles feerate graphs as wrapping paper.", tagline: "Sat/vB & sob stories", since: 2020, completedSales: 2677, rating: 4.73, responseMins: 41, specialty: "Financial" },
{ id: "v33", slug: "monero-monk", handle: "monero_monk", bio: "Ring-sig mystique vendor; every parcel includes a ring-sized diagram coaster.", tagline: "Privacy incense not included", since: 2018, completedSales: 5122, rating: 4.89, responseMins: 30, specialty: "Financial" },
{ id: "v34", slug: "proof-of-receive", handle: "proof_of_receive", bio: "Packaging fetishist obsessed with signed delivery receipts — sells wax-seal stickers.", tagline: "Chain of custody cosplay", since: 2015, completedSales: 7288, rating: 4.91, responseMins: 23, specialty: "Forgery" },
{ id: "v35", slug: "browser-leak-boutique", handle: "browser_leak_boutique", bio: "Fingerprint-themed soaps and WebRTC fear candles for blue-team spa nights.", tagline: "Scrub headers, not ethics", since: 2021, completedSales: 1644, rating: 4.67, responseMins: 57, specialty: "Security" },
{ id: "v36", slug: "hub-regular-supply", handle: "hub_regular_supply", bio: "Catch-all reseller mirroring whatever the hub hero section spotlights — chaotic neutral inventory.", tagline: "If it glows, I list it", since: 2013, completedSales: 22410, rating: 4.62, responseMins: 99, specialty: "BioEnhancements" },
];
const BY_SLUG = new Map(SHOP_SELLERS.map((s) => [s.slug, s]));
const BY_ID = new Map(SHOP_SELLERS.map((s) => [s.id, s]));
export const SHOP_SELLER_COUNT = SHOP_SELLERS.length;
export function getSellerBySlug(slug: string): ShopSeller | undefined {
return BY_SLUG.get(slug);
}
export function getSellerById(id: string): ShopSeller | undefined {
return BY_ID.get(id);
}
/** Deterministic seller per product — spreads listings across the bazaar */
export function sellerIdForProduct(productId: string): string {
let h = 0;
for (let i = 0; i < productId.length; i++) {
h = (h + productId.charCodeAt(i) * (i + 3)) % 2147483647;
}
const idx = Math.abs(h) % SHOP_SELLERS.length;
return SHOP_SELLERS[idx]!.id;
}