refactor(deck): rename Archipelago → Lab 484 everywhere
Use the real name: the backbone/brand is Lab 484 (the tech co & 45%
operating partner). Replaces all display text, the internal entity id
('archipelago' → 'lab484'), the page title, and the style.css comment.
Fixes the phrasings the rename made redundant (e.g. "the Lab 484 backbone"
under the Lab 484 wordmark → "shared, open infrastructure"; drops the
"(Lab 484)" qualifier on Lab 484's own responsibilities).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
4f84bec477
commit
4eb7e88ea5
10 changed files with 39 additions and 39 deletions
|
|
@ -4,7 +4,7 @@
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Archipelago — Investment Prospectus</title>
|
<title>Lab 484 — Investment Prospectus</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ const slides = [
|
||||||
{ id: 'title', label: 'Title', component: TitleSlide },
|
{ id: 'title', label: 'Title', component: TitleSlide },
|
||||||
{ id: 'vision', label: 'Vision', component: VisionSlide },
|
{ id: 'vision', label: 'Vision', component: VisionSlide },
|
||||||
{ id: 'network', label: 'The network', component: NetworkSlide },
|
{ id: 'network', label: 'The network', component: NetworkSlide },
|
||||||
{ id: 'archipelago', label: 'Archipelago', component: TechSlide },
|
{ id: 'lab484', label: 'Lab 484', component: TechSlide },
|
||||||
{ id: 'entities', label: 'Three experiences', component: EntitiesSlide },
|
{ id: 'entities', label: 'Three experiences', component: EntitiesSlide },
|
||||||
{ id: 'sollunar', label: 'SolLunar Society', component: SolLunarSlide },
|
{ id: 'sollunar', label: 'SolLunar Society', component: SolLunarSlide },
|
||||||
{ id: 'partnership', label: 'Ownership', component: PartnershipSlide },
|
{ id: 'partnership', label: 'Ownership', component: PartnershipSlide },
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ const a = props.entity.accent
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center gap-2 rounded-2xl border border-line bg-surface px-4 py-3 text-xs text-fg-muted">
|
<div class="flex items-center gap-2 rounded-2xl border border-line bg-surface px-4 py-3 text-xs text-fg-muted">
|
||||||
<Icon name="Layers" class="size-4 text-amber" />
|
<Icon name="Layers" class="size-4 text-amber" />
|
||||||
Runs on Archipelago — same membership, kiosk & app as every node.
|
Runs on Lab 484 — same membership, kiosk & app as every node.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
/**
|
/**
|
||||||
* The core metaphor, as an animated SVG.
|
* The core metaphor, as an animated SVG.
|
||||||
*
|
*
|
||||||
* Underground → Archipelago = the shared backbone / custom software.
|
* Underground → Lab 484 = the shared backbone / custom software.
|
||||||
* Unseen, always working, connects every entity (the mycelium).
|
* Unseen, always working, connects every entity (the mycelium).
|
||||||
* Flowers → the three experiences people actually engage with:
|
* Flowers → the three experiences people actually engage with:
|
||||||
* • SolLunar Punk Society (city center) — a permanent bloom
|
* • SolLunar Punk Society (city center) — a permanent bloom
|
||||||
|
|
@ -21,7 +21,7 @@ const GROUND = 300
|
||||||
|
|
||||||
// underground mycelium nodes (below the ground line)
|
// underground mycelium nodes (below the ground line)
|
||||||
const nodes: [number, number][] = [
|
const nodes: [number, number][] = [
|
||||||
[230, 340], // root · Archipelago
|
[230, 340], // root · Lab 484
|
||||||
[500, 335], // root · SolLunar
|
[500, 335], // root · SolLunar
|
||||||
[770, 340], // root · Chateau
|
[770, 340], // root · Chateau
|
||||||
[100, 340], // root · ghost
|
[100, 340], // root · ghost
|
||||||
|
|
@ -77,7 +77,7 @@ const fest = entityById('festivals') // travelling
|
||||||
const cha = entityById('chateau') // farm
|
const cha = entityById('chateau') // farm
|
||||||
|
|
||||||
// surface flowers: the three experiences + two faint "future" ones.
|
// surface flowers: the three experiences + two faint "future" ones.
|
||||||
// (Archipelago is the mycelium itself — the network below, not a flower.)
|
// (Lab 484 is the mycelium itself — the network below, not a flower.)
|
||||||
const flowers = [
|
const flowers = [
|
||||||
{ x: 230, kind: 'bloom', color: 'var(--color-indigo)', name: sol.name, tag: sol.role },
|
{ x: 230, kind: 'bloom', color: 'var(--color-indigo)', name: sol.name, tag: sol.role },
|
||||||
{ x: 500, kind: 'festival', color: 'var(--color-rose)', name: fest.name, tag: fest.role },
|
{ x: 500, kind: 'festival', color: 'var(--color-rose)', name: fest.name, tag: fest.role },
|
||||||
|
|
@ -275,14 +275,14 @@ const festivalCaps = [
|
||||||
|
|
||||||
<!-- captions -->
|
<!-- captions -->
|
||||||
<text x="500" y="34" text-anchor="middle" class="myc-zone">ABOVE GROUND · WHAT PEOPLE EXPERIENCE</text>
|
<text x="500" y="34" text-anchor="middle" class="myc-zone">ABOVE GROUND · WHAT PEOPLE EXPERIENCE</text>
|
||||||
<text x="500" y="588" text-anchor="middle" class="myc-zone">ARCHIPELAGO · THE SHARED BACKBONE BENEATH EVERY NODE</text>
|
<text x="500" y="588" text-anchor="middle" class="myc-zone">LAB 484 · THE SHARED BACKBONE BENEATH EVERY NODE</text>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
||||||
<div class="mt-6 grid gap-4 text-sm sm:grid-cols-2">
|
<div class="mt-6 grid gap-4 text-sm sm:grid-cols-2">
|
||||||
<div class="flex items-start gap-3">
|
<div class="flex items-start gap-3">
|
||||||
<span class="mt-0.5 text-pine"><Icon name="Layers" class="size-5" /></span>
|
<span class="mt-0.5 text-pine"><Icon name="Layers" class="size-5" /></span>
|
||||||
<p class="text-fg-muted">
|
<p class="text-fg-muted">
|
||||||
<span class="font-medium text-fg">Archipelago is the mycelium.</span>
|
<span class="font-medium text-fg">Lab 484 is the mycelium.</span>
|
||||||
One shared backbone runs unseen beneath every entity — members feel it, they don’t see it.
|
One shared backbone runs unseen beneath every entity — members feel it, they don’t see it.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,15 @@
|
||||||
/**
|
/**
|
||||||
* ARCHIPELAGO — pitch deck content & figures.
|
* LAB 484 — pitch deck content & figures.
|
||||||
*
|
*
|
||||||
* Single source of truth for the deck — no slide hard-codes a number or name.
|
* Single source of truth for the deck — no slide hard-codes a number or name.
|
||||||
*
|
*
|
||||||
* The financials are REAL, from SolLunarSociety.md, and belong exclusively to
|
* The financials are REAL, from SolLunarSociety.md, and belong exclusively to
|
||||||
* the first node — SolLunar Society (Austin). Archipelago (Lab 484), Pop-up
|
* the first node — SolLunar Society (Austin). Lab 484, Pop-up
|
||||||
* Festivals and Chateau du Faune are narrative/vision only and have no
|
* Festivals and Chateau du Faune are narrative/vision only and have no
|
||||||
* standalone numbers. P&L totals are recomputed from line items; the doc's
|
* standalone numbers. P&L totals are recomputed from line items; the doc's
|
||||||
* own summary totals didn't reconcile (kept in `pnlDocSummary`).
|
* own summary totals didn't reconcile (kept in `pnlDocSummary`).
|
||||||
*
|
*
|
||||||
* Archipelago is the shared backbone — open hardware + sovereign software (the
|
* Lab 484 is the shared backbone — open hardware + sovereign software (the
|
||||||
* "mycelium"). Three surface entities run on top of it:
|
* "mycelium"). Three surface entities run on top of it:
|
||||||
* • SolLunar Society — city members' club, Austin (the funded first node)
|
* • SolLunar Society — city members' club, Austin (the funded first node)
|
||||||
* • Pop-up Festivals — travelling gatherings (e.g. Solarpunk Summit)
|
* • Pop-up Festivals — travelling gatherings (e.g. Solarpunk Summit)
|
||||||
|
|
@ -21,12 +21,12 @@
|
||||||
export const PLACEHOLDER = true
|
export const PLACEHOLDER = true
|
||||||
|
|
||||||
export const brand = {
|
export const brand = {
|
||||||
name: 'Archipelago',
|
name: 'Lab 484',
|
||||||
short: 'Archipelago',
|
short: 'Lab 484',
|
||||||
// a connected network of islands — one backbone, many places.
|
// Lab 484 — the tech co / shared backbone (also the 45% operating partner).
|
||||||
tagline: 'One network. Three ways to experience it.',
|
tagline: 'One network. Three ways to experience it.',
|
||||||
subtagline:
|
subtagline:
|
||||||
'A sovereign network on the Archipelago backbone. The first node — SolLunar Society, a members’ club in Austin — is live, modeled and raising now; the festival and the farm are next.',
|
'A sovereign network on shared, open infrastructure. The first node — SolLunar Society, a members’ club in Austin — is live, modeled and raising now; the festival and the farm are next.',
|
||||||
firstNode: 'SolLunar Society · Austin, TX',
|
firstNode: 'SolLunar Society · Austin, TX',
|
||||||
contactEmail: 'invest@sollunar.example', // PLACEHOLDER
|
contactEmail: 'invest@sollunar.example', // PLACEHOLDER
|
||||||
// Seam for later: an LNbits instance + the founder's nostr npub power the
|
// Seam for later: an LNbits instance + the founder's nostr npub power the
|
||||||
|
|
@ -65,7 +65,7 @@ export type Entity = {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The entities. Archipelago is the backbone; the other three are the
|
* The entities. Lab 484 is the backbone; the other three are the
|
||||||
* experiences that run on it. PLACEHOLDER names & details.
|
* experiences that run on it. PLACEHOLDER names & details.
|
||||||
*/
|
*/
|
||||||
export const entities: Entity[] = [
|
export const entities: Entity[] = [
|
||||||
|
|
@ -77,7 +77,7 @@ export const entities: Entity[] = [
|
||||||
accent: 'indigo',
|
accent: 'indigo',
|
||||||
layer: 'surface',
|
layer: 'surface',
|
||||||
blurb:
|
blurb:
|
||||||
'The first node and the one we’re raising for: a members’ club in Austin where sovereignty-minded community — tenants, events, memberships and regenerative living — comes together year-round on the Archipelago stack.',
|
'The first node and the one we’re raising for: a members’ club in Austin where sovereignty-minded community — tenants, events, memberships and regenerative living — comes together year-round on the Lab 484 stack.',
|
||||||
traits: [
|
traits: [
|
||||||
'Live, financially-modeled first node (real P&L)',
|
'Live, financially-modeled first node (real P&L)',
|
||||||
'Five founding tenants + a three-tier membership',
|
'Five founding tenants + a three-tier membership',
|
||||||
|
|
@ -125,8 +125,8 @@ export const entities: Entity[] = [
|
||||||
icon: 'Trees',
|
icon: 'Trees',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'archipelago',
|
id: 'lab484',
|
||||||
name: 'Archipelago',
|
name: 'Lab 484',
|
||||||
role: 'Shared backbone',
|
role: 'Shared backbone',
|
||||||
kind: 'Open hardware & sovereign software',
|
kind: 'Open hardware & sovereign software',
|
||||||
accent: 'pine',
|
accent: 'pine',
|
||||||
|
|
@ -169,7 +169,7 @@ export const userEcosystem = [
|
||||||
icon: 'Zap',
|
icon: 'Zap',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'The Archipelago app',
|
title: 'The Lab 484 app',
|
||||||
body: 'Book spaces, buy tickets, find events and manage membership from one self-hosted app.',
|
body: 'Book spaces, buy tickets, find events and manage membership from one self-hosted app.',
|
||||||
icon: 'Sparkles',
|
icon: 'Sparkles',
|
||||||
},
|
},
|
||||||
|
|
@ -185,7 +185,7 @@ export const userEcosystem = [
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
/** The Archipelago backbone / core stack (the infrastructure pillars). */
|
/** The Lab 484 backbone / core stack (the infrastructure pillars). */
|
||||||
export const tech = [
|
export const tech = [
|
||||||
{
|
{
|
||||||
title: 'Decentralized mesh network',
|
title: 'Decentralized mesh network',
|
||||||
|
|
@ -222,7 +222,7 @@ export const tech = [
|
||||||
/* ─────────────────────────────────────────────────────────────
|
/* ─────────────────────────────────────────────────────────────
|
||||||
SolLunar Society — the first node's REAL business (from
|
SolLunar Society — the first node's REAL business (from
|
||||||
SolLunarSociety.md). All figures below are SolLunar Society's
|
SolLunarSociety.md). All figures below are SolLunar Society's
|
||||||
only; Archipelago (Lab 484), Festivals and Chateau have no
|
only; Lab 484, Festivals and Chateau have no
|
||||||
standalone numbers yet. Lab 484's economics appear here as
|
standalone numbers yet. Lab 484's economics appear here as
|
||||||
revenue lines INTO SolLunar (~$16k/mo) — don't double-count.
|
revenue lines INTO SolLunar (~$16k/mo) — don't double-count.
|
||||||
───────────────────────────────────────────────────────────── */
|
───────────────────────────────────────────────────────────── */
|
||||||
|
|
@ -262,11 +262,11 @@ export const partnership = {
|
||||||
role: 'Tech & operations',
|
role: 'Tech & operations',
|
||||||
responsibilities: [
|
responsibilities: [
|
||||||
'Operate the spaces & staff',
|
'Operate the spaces & staff',
|
||||||
'All IT / infrastructure (Archipelago)',
|
'All IT / infrastructure',
|
||||||
'Inbound payments · bootcamps',
|
'Inbound payments · bootcamps',
|
||||||
'Tenant & investor relations',
|
'Tenant & investor relations',
|
||||||
],
|
],
|
||||||
note: 'Builds & operates the Archipelago backbone — and is itself a tenant + event driver (~$16k/mo of the revenue below).',
|
note: 'Builds & operates the shared tech backbone — and is itself a tenant + event driver (~$16k/mo of the revenue below).',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Investors',
|
name: 'Investors',
|
||||||
|
|
@ -482,7 +482,7 @@ export const roadmap = [
|
||||||
phase: 'Phase 1',
|
phase: 'Phase 1',
|
||||||
title: 'Operate & prove the model',
|
title: 'Operate & prove the model',
|
||||||
when: '~0–12 mo',
|
when: '~0–12 mo',
|
||||||
body: 'Run memberships, events and tenants in Austin; validate the P&L publicly on the Archipelago stack.',
|
body: 'Run memberships, events and tenants in Austin; validate the P&L publicly on the Lab 484 stack.',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
phase: 'Phase 2',
|
phase: 'Phase 2',
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ const shares = investorAsk.scenarios.map((s) => ({ equity: s, annual: Math.round
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="mt-9 max-w-xl text-sm text-fg-muted">
|
<p class="mt-9 max-w-xl text-sm text-fg-muted">
|
||||||
Prove the model in Austin, then replicate it on Archipelago — the festival and the farm are next.
|
Prove the model in Austin, then replicate it on Lab 484 — the festival and the farm are next.
|
||||||
</p>
|
</p>
|
||||||
</SlideFrame>
|
</SlideFrame>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@ import SlideFrame from '../components/SlideFrame.vue'
|
||||||
import Icon from '../components/Icon.vue'
|
import Icon from '../components/Icon.vue'
|
||||||
import { surfaceEntities, entityById, accentText, accentRing } from '../data'
|
import { surfaceEntities, entityById, accentText, accentRing } from '../data'
|
||||||
|
|
||||||
const archipelago = entityById('archipelago')
|
const backbone = entityById('lab484')
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<SlideFrame
|
<SlideFrame
|
||||||
kicker="The collaboration"
|
kicker="The collaboration"
|
||||||
title="Three experiences, one backbone"
|
title="Three experiences, one backbone"
|
||||||
subtitle="One is funded and opening now — SolLunar Society in Austin. The festival and the farm follow, on the same Archipelago stack."
|
subtitle="One is funded and opening now — SolLunar Society in Austin. The festival and the farm follow, on the same Lab 484 stack."
|
||||||
>
|
>
|
||||||
<div class="grid gap-5 md:grid-cols-3">
|
<div class="grid gap-5 md:grid-cols-3">
|
||||||
<div
|
<div
|
||||||
|
|
@ -45,18 +45,18 @@ const archipelago = entityById('archipelago')
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- the shared backbone beneath all three -->
|
<!-- the shared backbone beneath all three -->
|
||||||
<div class="mt-5 flex items-center gap-4 rounded-2xl border p-5" :class="accentRing[archipelago.accent]">
|
<div class="mt-5 flex items-center gap-4 rounded-2xl border p-5" :class="accentRing[backbone.accent]">
|
||||||
<span class="grid size-11 shrink-0 place-items-center rounded-xl bg-surface-2" :class="accentText[archipelago.accent]">
|
<span class="grid size-11 shrink-0 place-items-center rounded-xl bg-surface-2" :class="accentText[backbone.accent]">
|
||||||
<Icon :name="archipelago.icon" class="size-6" />
|
<Icon :name="backbone.icon" class="size-6" />
|
||||||
</span>
|
</span>
|
||||||
<div class="min-w-0 flex-1">
|
<div class="min-w-0 flex-1">
|
||||||
<h3 class="font-display text-lg font-semibold text-fg">
|
<h3 class="font-display text-lg font-semibold text-fg">
|
||||||
{{ archipelago.name }}
|
{{ backbone.name }}
|
||||||
<span class="ml-1 text-xs font-normal uppercase tracking-wider" :class="accentText[archipelago.accent]">
|
<span class="ml-1 text-xs font-normal uppercase tracking-wider" :class="accentText[backbone.accent]">
|
||||||
· {{ archipelago.role }}
|
· {{ backbone.role }}
|
||||||
</span>
|
</span>
|
||||||
</h3>
|
</h3>
|
||||||
<p class="text-sm text-fg-muted">{{ archipelago.blurb }}</p>
|
<p class="text-sm text-fg-muted">{{ backbone.blurb }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</SlideFrame>
|
</SlideFrame>
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ const icons = ['Building2', 'BedDouble', 'Cpu']
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="mt-6 text-sm text-fg-muted">
|
<p class="mt-6 text-sm text-fg-muted">
|
||||||
The Yellow House data center makes SolLunar self-hosting — the Archipelago stack runs on-site,
|
The Yellow House data center makes SolLunar self-hosting — the Lab 484 stack runs on-site,
|
||||||
not in someone else's cloud.
|
not in someone else's cloud.
|
||||||
</p>
|
</p>
|
||||||
</SlideFrame>
|
</SlideFrame>
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,9 @@ import { tech } from '../data'
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<SlideFrame
|
<SlideFrame
|
||||||
kicker="Archipelago · the shared backbone"
|
kicker="Lab 484 · the shared backbone"
|
||||||
title="Open hardware, sovereign software"
|
title="Open hardware, sovereign software"
|
||||||
subtitle="Archipelago is the stack under every entity — owned by the network, documented to be rebuilt anywhere. Build it once; every place plugs in."
|
subtitle="Lab 484 is the stack under every entity — owned by the network, documented to be rebuilt anywhere. Build it once; every place plugs in."
|
||||||
>
|
>
|
||||||
<div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
|
<div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
|
||||||
<div
|
<div
|
||||||
|
|
|
||||||
|
|
@ -143,7 +143,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ─────────────────────────────────────────────────────────────
|
/* ─────────────────────────────────────────────────────────────
|
||||||
ARCHIPELAGO pitch-deck brand palette. Numbered accent scales are
|
LAB 484 pitch-deck brand palette. Numbered accent scales are
|
||||||
static SOLID fills (bars, dots, tinted panels) that read on both
|
static SOLID fills (bars, dots, tinted panels) that read on both
|
||||||
light and dark; the flipping `--color-{accent}` above is for TEXT.
|
light and dark; the flipping `--color-{accent}` above is for TEXT.
|
||||||
───────────────────────────────────────────────────────────── */
|
───────────────────────────────────────────────────────────── */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue