chore(deck): rename Solunar to SolLunar throughout
Display text only — the internal 'solunar' entity id and SolunarSlide component/filename are unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
|
@ -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>Solunar Punk Society — Investment Prospectus</title>
|
<title>SolLunar Punk Society — Investment Prospectus</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ const slides = [
|
||||||
{ id: 'tech', label: 'Core stack', component: TechSlide },
|
{ id: 'tech', label: 'Core stack', component: TechSlide },
|
||||||
{ id: 'entities', label: 'Three entities', component: EntitiesSlide },
|
{ id: 'entities', label: 'Three entities', component: EntitiesSlide },
|
||||||
{ id: 'archipelago', label: 'Archipelago', component: ArchipelagoSlide },
|
{ id: 'archipelago', label: 'Archipelago', component: ArchipelagoSlide },
|
||||||
{ id: 'solunar', label: 'Solunar Society', component: SolunarSlide },
|
{ id: 'solunar', label: 'SolLunar Society', component: SolunarSlide },
|
||||||
{ id: 'chateau', label: 'Chateau du Faune', component: ChateauSlide },
|
{ id: 'chateau', label: 'Chateau du Faune', component: ChateauSlide },
|
||||||
{ id: 'gallery', label: 'Gallery', component: GallerySlide },
|
{ id: 'gallery', label: 'Gallery', component: GallerySlide },
|
||||||
{ id: 'ecosystem', label: 'One membership', component: EcosystemSlide },
|
{ id: 'ecosystem', label: 'One membership', component: EcosystemSlide },
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
* Unseen, always working, connects every entity.
|
* Unseen, always working, connects every entity.
|
||||||
* Flowers → the three entities people actually experience:
|
* Flowers → the three entities people actually experience:
|
||||||
* • Archipelago (city center) — a permanent bloom
|
* • Archipelago (city center) — a permanent bloom
|
||||||
* • Solunar Society (pop-up fest.) — ephemeral cluster
|
* • SolLunar Society (pop-up fest.) — ephemeral cluster
|
||||||
* • Chateau du Faune (farm center) — a permanent bloom
|
* • Chateau du Faune (farm center) — a permanent bloom
|
||||||
* Ghost flowers→ once the mycelium runs, new locations & festivals sprout
|
* Ghost flowers→ once the mycelium runs, new locations & festivals sprout
|
||||||
* cheaply, anywhere in the world.
|
* cheaply, anywhere in the world.
|
||||||
|
|
@ -22,7 +22,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 · Archipelago
|
||||||
[500, 335], // root · Solunar
|
[500, 335], // root · SolLunar
|
||||||
[770, 340], // root · Chateau
|
[770, 340], // root · Chateau
|
||||||
[100, 340], // root · ghost
|
[100, 340], // root · ghost
|
||||||
[900, 340], // root · ghost
|
[900, 340], // root · ghost
|
||||||
|
|
@ -195,7 +195,7 @@ const festivalCaps = [
|
||||||
<circle :cx="f.x + 12" :cy="GROUND - 92" r="2.4" fill="hsl(0 0% 100% / 0.45)" />
|
<circle :cx="f.x + 12" :cy="GROUND - 92" r="2.4" fill="hsl(0 0% 100% / 0.45)" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- ephemeral festival cluster (Solunar) -->
|
<!-- ephemeral festival cluster (SolLunar) -->
|
||||||
<template v-else-if="f.kind === 'festival'">
|
<template v-else-if="f.kind === 'festival'">
|
||||||
<path
|
<path
|
||||||
:d="`M ${f.x} ${GROUND} C ${f.x - 6} ${GROUND - 20}, ${f.x + 6} ${GROUND - 34}, ${f.x} ${GROUND - 46}`"
|
:d="`M ${f.x} ${GROUND} C ${f.x - 6} ${GROUND - 20}, ${f.x + 6} ${GROUND - 34}, ${f.x} ${GROUND - 46}`"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* SOLUNAR PUNK SOCIETY — pitch deck content & figures.
|
* SOLLUNAR PUNK SOCIETY — pitch deck content & figures.
|
||||||
*
|
*
|
||||||
* ⚠️ EVERYTHING IN THIS FILE IS A PLACEHOLDER.
|
* ⚠️ EVERYTHING IN THIS FILE IS A PLACEHOLDER.
|
||||||
* This is the single source of truth for the deck. To turn the deck into
|
* This is the single source of truth for the deck. To turn the deck into
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
* The pitch is a collaboration between three entities, all running the same
|
* The pitch is a collaboration between three entities, all running the same
|
||||||
* core stack + user ecosystem so members get the full experience anywhere:
|
* core stack + user ecosystem so members get the full experience anywhere:
|
||||||
* • Archipelago — hardware/software city center (the tech backbone)
|
* • Archipelago — hardware/software city center (the tech backbone)
|
||||||
* • Solunar Society — pop-up festivals (the ephemeral, travelling node)
|
* • SolLunar Society — pop-up festivals (the ephemeral, travelling node)
|
||||||
* • Chateau du Faune — regenerative farm center (the rural node)
|
* • Chateau du Faune — regenerative farm center (the rural node)
|
||||||
*
|
*
|
||||||
* Currency: all figures are USD unless noted.
|
* Currency: all figures are USD unless noted.
|
||||||
|
|
@ -19,13 +19,13 @@
|
||||||
export const PLACEHOLDER = true
|
export const PLACEHOLDER = true
|
||||||
|
|
||||||
export const brand = {
|
export const brand = {
|
||||||
name: 'Solunar Punk Society',
|
name: 'SolLunar Punk Society',
|
||||||
short: 'Solunar Punk',
|
short: 'SolLunar Punk',
|
||||||
// solarpunk by day, lunarpunk by night — sovereign tech, regenerative culture.
|
// solarpunk by day, lunarpunk by night — sovereign tech, regenerative culture.
|
||||||
tagline: 'One sovereign network. Three ways to experience it.',
|
tagline: 'One sovereign network. Three ways to experience it.',
|
||||||
subtagline:
|
subtagline:
|
||||||
'A collaboration between Archipelago, Solunar Society and Chateau du Faune — every location runs the full core stack, so the membership, the payments and the experience travel with you.',
|
'A collaboration between Archipelago, SolLunar Society and Chateau du Faune — every location runs the full core stack, so the membership, the payments and the experience travel with you.',
|
||||||
contactEmail: 'invest@solunarpunk.example', // PLACEHOLDER
|
contactEmail: 'invest@sollunarpunk.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
|
||||||
// "contribute" tiers. Left null until wired (see src/features/{lnbits,nostr}).
|
// "contribute" tiers. Left null until wired (see src/features/{lnbits,nostr}).
|
||||||
lnbitsBaseUrl: null as string | null,
|
lnbitsBaseUrl: null as string | null,
|
||||||
|
|
@ -80,7 +80,7 @@ export const entities: Entity[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'solunar',
|
id: 'solunar',
|
||||||
name: 'Solunar Society',
|
name: 'SolLunar Society',
|
||||||
role: 'Pop-up festivals',
|
role: 'Pop-up festivals',
|
||||||
kind: 'Travelling · ephemeral gatherings',
|
kind: 'Travelling · ephemeral gatherings',
|
||||||
accent: 'indigo',
|
accent: 'indigo',
|
||||||
|
|
@ -137,7 +137,7 @@ export const userEcosystem = [
|
||||||
icon: 'Zap',
|
icon: 'Zap',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'The Solunar app',
|
title: 'The SolLunar 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',
|
||||||
},
|
},
|
||||||
|
|
@ -189,7 +189,7 @@ export const tech = [
|
||||||
|
|
||||||
/** Revenue streams across the collaboration. */
|
/** Revenue streams across the collaboration. */
|
||||||
export const revenueStreams = [
|
export const revenueStreams = [
|
||||||
{ title: 'Tickets & festivals', note: 'Solunar Society gatherings', icon: 'Ticket' },
|
{ title: 'Tickets & festivals', note: 'SolLunar Society gatherings', icon: 'Ticket' },
|
||||||
{ title: 'Room & lodging rentals', note: 'City & farm stays', icon: 'BedDouble' },
|
{ title: 'Room & lodging rentals', note: 'City & farm stays', icon: 'BedDouble' },
|
||||||
{ title: 'Retreats & residencies', note: 'Hosted programs at the farm', icon: 'Mountain' },
|
{ title: 'Retreats & residencies', note: 'Hosted programs at the farm', icon: 'Mountain' },
|
||||||
{ title: 'Experiences & workshops', note: 'Classes, tastings, tours', icon: 'Palette' },
|
{ title: 'Experiences & workshops', note: 'Classes, tastings, tours', icon: 'Palette' },
|
||||||
|
|
@ -242,7 +242,7 @@ export const costCategories: CostCategory[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'solunar',
|
id: 'solunar',
|
||||||
title: 'Solunar Society · festivals',
|
title: 'SolLunar Society · festivals',
|
||||||
subtitle: 'Mobile deployment kit + first-season production',
|
subtitle: 'Mobile deployment kit + first-season production',
|
||||||
icon: 'Tent',
|
icon: 'Tent',
|
||||||
accent: 'indigo',
|
accent: 'indigo',
|
||||||
|
|
@ -368,7 +368,7 @@ export const roadmap = [
|
||||||
phase: 'Phase 1',
|
phase: 'Phase 1',
|
||||||
title: 'Launch the three entities',
|
title: 'Launch the three entities',
|
||||||
when: '~6–9 mo',
|
when: '~6–9 mo',
|
||||||
body: 'Fit out Archipelago and Chateau du Faune; stage the first Solunar festival.',
|
body: 'Fit out Archipelago and Chateau du Faune; stage the first SolLunar festival.',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
phase: 'Phase 2',
|
phase: 'Phase 2',
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
*
|
*
|
||||||
* src/deck/gallery/city/ → City (Archipelago)
|
* src/deck/gallery/city/ → City (Archipelago)
|
||||||
* src/deck/gallery/farm/ → Farm (Chateau du Faune)
|
* src/deck/gallery/farm/ → Farm (Chateau du Faune)
|
||||||
* src/deck/gallery/festival/ → Festival (Solunar Society)
|
* src/deck/gallery/festival/ → Festival (SolLunar Society)
|
||||||
*
|
*
|
||||||
* Supported: jpg jpeg png webp avif gif svg. Images show sorted by filename,
|
* Supported: jpg jpeg png webp avif gif svg. Images show sorted by filename,
|
||||||
* so prefix with 01-, 02-, … to control order. The seeded *-placeholder.svg
|
* so prefix with 01-, 02-, … to control order. The seeded *-placeholder.svg
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ they appear automatically** — no code to touch.
|
||||||
| ----------- | -------- | ----------------- |
|
| ----------- | -------- | ----------------- |
|
||||||
| `city/` | City | Archipelago |
|
| `city/` | City | Archipelago |
|
||||||
| `farm/` | Farm | Chateau du Faune |
|
| `farm/` | Farm | Chateau du Faune |
|
||||||
| `festival/` | Festival | Solunar Society |
|
| `festival/` | Festival | SolLunar Society |
|
||||||
|
|
||||||
- Supported formats: `jpg` `jpeg` `png` `webp` `avif` `gif` `svg`.
|
- Supported formats: `jpg` `jpeg` `png` `webp` `avif` `gif` `svg`.
|
||||||
- Images display **sorted by filename** — prefix `01-`, `02-`, … to order them.
|
- Images display **sorted by filename** — prefix `01-`, `02-`, … to order them.
|
||||||
|
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 620" width="800" height="620" font-family="Georgia, serif">
|
|
||||||
<defs>
|
|
||||||
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
|
|
||||||
<stop offset="0" stop-color="hsl(14 72% 62%)" stop-opacity="0.40"/>
|
|
||||||
<stop offset="1" stop-color="hsl(160 28% 6%)" stop-opacity="1"/>
|
|
||||||
</linearGradient>
|
|
||||||
</defs>
|
|
||||||
<rect width="800" height="620" fill="hsl(160 28% 6%)"/>
|
|
||||||
<rect width="800" height="620" fill="url(#g)"/>
|
|
||||||
<circle cx="740" cy="60" r="120" fill="hsl(14 72% 62%)" opacity="0.12"/>
|
|
||||||
<circle cx="70" cy="550" r="90" fill="hsl(14 72% 62%)" opacity="0.10"/>
|
|
||||||
<text x="400" y="270" text-anchor="middle" fill="hsl(14 72% 62%)" font-size="46" font-weight="bold">Farm</text>
|
|
||||||
<text x="400" y="316" text-anchor="middle" fill="hsl(44 30% 90%)" font-size="26" opacity="0.85">Photo 01</text>
|
|
||||||
<text x="400" y="354" text-anchor="middle" fill="hsl(150 8% 62%)" font-size="18" letter-spacing="3">PLACEHOLDER · 800×620</text>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 984 B |
|
|
@ -1,15 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 900" width="800" height="900" font-family="Georgia, serif">
|
|
||||||
<defs>
|
|
||||||
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
|
|
||||||
<stop offset="0" stop-color="hsl(14 72% 62%)" stop-opacity="0.40"/>
|
|
||||||
<stop offset="1" stop-color="hsl(160 28% 6%)" stop-opacity="1"/>
|
|
||||||
</linearGradient>
|
|
||||||
</defs>
|
|
||||||
<rect width="800" height="900" fill="hsl(160 28% 6%)"/>
|
|
||||||
<rect width="800" height="900" fill="url(#g)"/>
|
|
||||||
<circle cx="740" cy="60" r="120" fill="hsl(14 72% 62%)" opacity="0.12"/>
|
|
||||||
<circle cx="70" cy="830" r="90" fill="hsl(14 72% 62%)" opacity="0.10"/>
|
|
||||||
<text x="400" y="410" text-anchor="middle" fill="hsl(14 72% 62%)" font-size="46" font-weight="bold">Farm</text>
|
|
||||||
<text x="400" y="456" text-anchor="middle" fill="hsl(44 30% 90%)" font-size="26" opacity="0.85">Photo 02</text>
|
|
||||||
<text x="400" y="494" text-anchor="middle" fill="hsl(150 8% 62%)" font-size="18" letter-spacing="3">PLACEHOLDER · 800×900</text>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 984 B |
|
|
@ -1,15 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 560" width="800" height="560" font-family="Georgia, serif">
|
|
||||||
<defs>
|
|
||||||
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
|
|
||||||
<stop offset="0" stop-color="hsl(14 72% 62%)" stop-opacity="0.40"/>
|
|
||||||
<stop offset="1" stop-color="hsl(160 28% 6%)" stop-opacity="1"/>
|
|
||||||
</linearGradient>
|
|
||||||
</defs>
|
|
||||||
<rect width="800" height="560" fill="hsl(160 28% 6%)"/>
|
|
||||||
<rect width="800" height="560" fill="url(#g)"/>
|
|
||||||
<circle cx="740" cy="60" r="120" fill="hsl(14 72% 62%)" opacity="0.12"/>
|
|
||||||
<circle cx="70" cy="490" r="90" fill="hsl(14 72% 62%)" opacity="0.10"/>
|
|
||||||
<text x="400" y="240" text-anchor="middle" fill="hsl(14 72% 62%)" font-size="46" font-weight="bold">Farm</text>
|
|
||||||
<text x="400" y="286" text-anchor="middle" fill="hsl(44 30% 90%)" font-size="26" opacity="0.85">Photo 03</text>
|
|
||||||
<text x="400" y="324" text-anchor="middle" fill="hsl(150 8% 62%)" font-size="18" letter-spacing="3">PLACEHOLDER · 800×560</text>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 984 B |
|
|
@ -1,15 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800" width="800" height="800" font-family="Georgia, serif">
|
|
||||||
<defs>
|
|
||||||
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
|
|
||||||
<stop offset="0" stop-color="hsl(14 72% 62%)" stop-opacity="0.40"/>
|
|
||||||
<stop offset="1" stop-color="hsl(160 28% 6%)" stop-opacity="1"/>
|
|
||||||
</linearGradient>
|
|
||||||
</defs>
|
|
||||||
<rect width="800" height="800" fill="hsl(160 28% 6%)"/>
|
|
||||||
<rect width="800" height="800" fill="url(#g)"/>
|
|
||||||
<circle cx="740" cy="60" r="120" fill="hsl(14 72% 62%)" opacity="0.12"/>
|
|
||||||
<circle cx="70" cy="730" r="90" fill="hsl(14 72% 62%)" opacity="0.10"/>
|
|
||||||
<text x="400" y="360" text-anchor="middle" fill="hsl(14 72% 62%)" font-size="46" font-weight="bold">Farm</text>
|
|
||||||
<text x="400" y="406" text-anchor="middle" fill="hsl(44 30% 90%)" font-size="26" opacity="0.85">Photo 04</text>
|
|
||||||
<text x="400" y="444" text-anchor="middle" fill="hsl(150 8% 62%)" font-size="18" letter-spacing="3">PLACEHOLDER · 800×800</text>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 984 B |
BIN
src/deck/gallery/farm/1536-2048-max.jpg
Normal file
|
After Width: | Height: | Size: 396 KiB |
BIN
src/deck/gallery/farm/2048-1536-max (1).jpg
Normal file
|
After Width: | Height: | Size: 522 KiB |
BIN
src/deck/gallery/farm/2048-1536-max (2).jpg
Normal file
|
After Width: | Height: | Size: 305 KiB |
BIN
src/deck/gallery/farm/2048-1536-max.jpg
Normal file
|
After Width: | Height: | Size: 411 KiB |
BIN
src/deck/gallery/farm/PXL_20250907_134308735.jpg
Normal file
|
After Width: | Height: | Size: 7.2 MiB |
BIN
src/deck/gallery/farm/PXL_20251121_064432019.jpg
Normal file
|
After Width: | Height: | Size: 4 MiB |
BIN
src/deck/gallery/farm/garden.jpg
Normal file
|
After Width: | Height: | Size: 388 KiB |
|
|
@ -93,7 +93,7 @@
|
||||||
--color-amber-400: hsl(36 95% 60%);
|
--color-amber-400: hsl(36 95% 60%);
|
||||||
--color-amber-500: hsl(32 92% 52%);
|
--color-amber-500: hsl(32 92% 52%);
|
||||||
|
|
||||||
/* lunarpunk / festival accent — Solunar Society (night) */
|
/* lunarpunk / festival accent — SolLunar Society (night) */
|
||||||
--color-indigo-300: hsl(255 85% 78%);
|
--color-indigo-300: hsl(255 85% 78%);
|
||||||
--color-indigo-400: hsl(256 78% 68%);
|
--color-indigo-400: hsl(256 78% 68%);
|
||||||
--color-indigo-500: hsl(258 70% 58%);
|
--color-indigo-500: hsl(258 70% 58%);
|
||||||
|
|
|
||||||