diff --git a/src/deck/data.ts b/src/deck/data.ts new file mode 100644 index 0000000..aa39b4e --- /dev/null +++ b/src/deck/data.ts @@ -0,0 +1,304 @@ +/** + * ARCHIPELAGO — pitch deck content & figures. + * + * ⚠️ EVERYTHING IN THIS FILE IS A PLACEHOLDER. + * This is the single source of truth for the deck. To turn the deck into + * the real pitch, edit values here — no slide component hard-codes a number, + * a tier price, or a location name. Search for `PLACEHOLDER` to find every + * spot that needs your real data. + * + * Currency: all figures are USD unless noted. + */ + +export const PLACEHOLDER = true + +export const brand = { + name: 'ARCHIPELAGO', + fullName: 'The Archipelago Network', + // archipelago = islands that look separate above the water but are joined + // beneath it — the network of self-sustaining locations, connected below. + tagline: 'A replicable network of decentralized, self-sustaining locations.', + subtagline: + 'Two proof-of-concept launches. Open hardware, sovereign software, real revenue — a blueprint anyone can deploy anywhere.', + contactEmail: 'invest@archipelago.example', // PLACEHOLDER + // Seam for later: an LNbits instance + the founder's nostr npub power the + // "contribute" tiers. Left null until wired (see src/features/{lnbits,nostr}). + lnbitsBaseUrl: null as string | null, + nostrNpub: null as string | null, +} + +/** Big-picture framing for the vision slide. */ +export const problem = { + headline: 'Connectivity, community, and ownership are centralizing.', + points: [ + 'Networks, payments, and platforms are owned by a handful of gatekeepers.', + 'Local communities host the value but capture almost none of it.', + 'Every "smart" venue you can name is a walled garden that rents you access.', + ], + thesis: + 'We build physical nodes that own their own network, payments, and data — and prove they can pay for themselves.', +} + +/** The technology stack shown on the Tech slide. */ +export const tech = [ + { + title: 'Decentralized mesh network', + body: 'Community-owned routers and mesh kits blanket each location — connectivity that no single provider can switch off.', + icon: 'Wifi', + }, + { + title: 'Open hardware', + body: 'Servers, routers, exchange kiosks and NFC hardware from a documented, replicable bill of materials.', + icon: 'Cpu', + }, + { + title: 'Sovereign software', + body: 'Self-hosted services on a stack you control — no platform lock-in, forkable by any future node.', + icon: 'Code', + }, + { + title: 'Bitcoin & Lightning payments', + body: 'Instant, low-fee settlement at kiosks and NFC points. Value stays in the network, not the middleman.', + icon: 'Zap', + }, + { + title: 'Nostr identity & comms', + body: 'Portable identity, messaging and social layer that travels with members across every node.', + icon: 'KeyRound', + }, + { + title: 'Replicable blueprint', + body: 'Every node ships its own build docs. Proven once, the whole stack redeploys anywhere in the world.', + icon: 'Globe', + }, +] + +export type Location = { + id: string + name: string + kind: string + blurb: string + highlights: string[] + spaces: string[] + icon: string +} + +/** The two proof-of-concept launches. PLACEHOLDER names & details. */ +export const locations: Record<'city' | 'farm', Location> = { + city: { + id: 'city', + name: 'Isla Ciudad', // PLACEHOLDER — real city-node name + kind: 'Urban node · event space', + blurb: + 'A downtown flagship: co-working, exchange kiosk, and a public-facing event venue that puts the technology in front of thousands.', + highlights: [ + 'High-footfall demonstration of the full stack', + 'Exchange kiosk + NFC payments live to the public', + 'Anchors the network’s brand and partnerships', + ], + spaces: ['Event hall', 'Co-working floor', 'Exchange kiosk', 'Café & bar', 'Studio / podcast room'], + icon: 'Building2', + }, + farm: { + id: 'farm', + name: 'Isla Granja', // PLACEHOLDER — real farm-node name + kind: 'Rural node · regenerative farm', + blurb: + 'An off-grid regenerative farm: retreats, artist & developer residencies, and the network’s living lab — home to the alpacas.', + highlights: [ + 'Off-grid power + mesh proves the stack anywhere', + 'Retreats & residencies generate premium revenue', + 'Sponsor-an-alpaca connects small backers to the land', + ], + spaces: ['Retreat lodging', 'Residency studios', 'Event barn', 'Alpaca paddocks', 'Regenerative gardens'], + icon: 'Trees', + }, +} + +/** Revenue streams the operational event spaces generate. */ +export const revenueStreams = [ + { title: 'Room & lodging rentals', note: 'Nightly stays across both nodes', icon: 'BedDouble' }, + { title: 'Experiences & workshops', note: 'Ticketed classes, tastings, tours', icon: 'Sparkles' }, + { title: 'Retreats', note: 'Multi-day hosted programs', icon: 'Mountain' }, + { title: 'Artist & developer residencies', note: 'Paid & sponsored residencies', icon: 'Palette' }, + { title: 'Event & venue hire', note: 'Weddings, launches, conferences', icon: 'PartyPopper' }, + { title: 'Network services', note: 'Connectivity, payments, kiosk fees', icon: 'Router' }, +] + +export type CostItem = { label: string; amount: number; note?: string } +export type CostCategory = { + id: string + title: string + subtitle: string + icon: string + items: CostItem[] +} + +/** + * The three investment cost categories. PLACEHOLDER amounts (USD). + * `total` is derived from items() below — edit line items, not totals. + */ +export const costCategories: CostCategory[] = [ + { + id: 'core', + title: 'Base hardware & development', + subtitle: 'Servers, routers, exchange kiosks, NFC hardware + core dev salaries', + icon: 'Cpu', + items: [ + { label: 'Edge servers & compute', amount: 60_000 }, + { label: 'Mesh routers & networking', amount: 45_000 }, + { label: 'Exchange kiosks', amount: 50_000, note: '2 units' }, + { label: 'NFC hardware & POS', amount: 25_000 }, + { label: 'Core development salaries', amount: 300_000, note: '4 engineers · 12 mo' }, + ], + }, + { + id: 'city', + title: 'City location build', + subtitle: 'Fit-out & launch of the urban event node', + icon: 'Building2', + items: [ + { label: 'Lease deposit & permits', amount: 60_000 }, + { label: 'Renovation & fit-out', amount: 260_000 }, + { label: 'AV, furniture & kitchen', amount: 120_000 }, + { label: 'On-site network install', amount: 40_000 }, + { label: 'Launch & working capital', amount: 40_000 }, + ], + }, + { + id: 'farm', + title: 'Farm location build', + subtitle: 'Land, structures & off-grid infrastructure for the rural node', + icon: 'Trees', + items: [ + { label: 'Land improvements & access', amount: 90_000 }, + { label: 'Lodging & studio structures', amount: 300_000 }, + { label: 'Off-grid power & water', amount: 110_000 }, + { label: 'Alpacas & farm infrastructure', amount: 70_000 }, + { label: 'On-site mesh & launch', amount: 60_000 }, + ], + }, +] + +export const categoryTotal = (c: CostCategory) => c.items.reduce((s, i) => s + i.amount, 0) +export const raiseTotal = costCategories.reduce((s, c) => s + categoryTotal(c), 0) + +export type AngelTier = { + name: string + minAmount: number + equity: string + benefits: string[] + featured?: boolean +} + +/** Angel investment — equity + benefits. PLACEHOLDER terms. */ +export const angelTiers: AngelTier[] = [ + { + name: 'Seed Angel', + minAmount: 50_000, + equity: 'Equity from a common SAFE', + benefits: [ + 'Pro-rata equity in the network', + 'Founding-member access to both nodes', + 'Quarterly investor updates', + ], + }, + { + name: 'Network Angel', + minAmount: 100_000, + equity: 'Priced equity + pro-rata rights', + featured: true, + benefits: [ + 'Everything in Seed, plus:', + 'Advisory input on network direction', + 'Complimentary retreat & residency weeks', + 'Named node sponsor', + ], + }, + { + name: 'Founding Angel', + minAmount: 250_000, + equity: 'Priced equity + board observer seat', + benefits: [ + 'Everything in Network, plus:', + 'Board observer seat', + 'Naming rights on a flagship space', + 'Lifetime network membership', + ], + }, +] + +export type ContributorTier = { + name: string + amount: number + unit?: string + blurb: string + icon: string + featured?: boolean +} + +/** Smaller backers — perks, not equity. PLACEHOLDER prices. */ +export const contributorTiers: ContributorTier[] = [ + { + name: 'Backer', + amount: 25, + blurb: 'Fund a member NFC card and get your name on the founders’ wall.', + icon: 'CreditCard', + }, + { + name: 'Node Router', + amount: 150, + blurb: 'Put a community-owned router on the mesh. Adopt-a-node on the live map.', + icon: 'Router', + }, + { + name: 'Mesh Kit', + amount: 250, + blurb: 'Sponsor a full mesh kit that extends coverage across a location.', + icon: 'Wifi', + featured: true, + }, + { + name: 'Sponsor an Alpaca', + amount: 500, + unit: '/yr', + blurb: 'Name & sponsor an alpaca at the farm. Photos, updates, and a visit.', + icon: 'Origami', + }, +] + +/** Roadmap / replication story. */ +export const roadmap = [ + { + phase: 'Phase 0', + title: 'Raise & finalize', + when: 'Now', + body: 'Close the angel round, lock sites, finalize the open bill of materials.', + }, + { + phase: 'Phase 1', + title: 'Build the two nodes', + when: '~6–9 mo', + body: 'Fit out the city node and the farm node in parallel; deploy the full stack.', + }, + { + phase: 'Phase 2', + title: 'Operate & prove revenue', + when: '~9–18 mo', + body: 'Run events, retreats and residencies; validate the unit economics publicly.', + }, + { + phase: 'Phase 3', + title: 'Open the blueprint', + when: '18 mo+', + body: 'Publish the replication kit; onboard new nodes worldwide on shared infrastructure.', + }, +] + +/** Formatting helpers used across slides. */ +export const fmtUsd = (n: number) => + n >= 1000 + ? `$${(n / 1000).toLocaleString('en-US', { maximumFractionDigits: n % 1000 === 0 ? 0 : 1 })}k` + : `$${n.toLocaleString('en-US')}` + +export const fmtUsdFull = (n: number) => `$${n.toLocaleString('en-US')}`