diff --git a/src/routes/(pages)/(lp)/+page.svelte b/src/routes/(pages)/(lp)/+page.svelte
index 80449f161..11bef697e 100644
--- a/src/routes/(pages)/(lp)/+page.svelte
+++ b/src/routes/(pages)/(lp)/+page.svelte
@@ -6,6 +6,7 @@
import LpFooter from './components/lp-footer.svelte';
import LpHiwEntrypoint from './components/lp-hiw-entrypoint.svelte';
import LpSectionHeader from './components/lp-section-header.svelte';
+ import LpWaveFeatureCard from './components/lp-wave-feature-card.svelte';
import UsecaseSection from './components/usecase-section.svelte';
import TrustedBy from './components/trusted-by.svelte';
import LpIllustrationFlyingCoins from '$lib/components/illustrations/lp-illustration-flying-coins.svelte';
@@ -37,6 +38,10 @@
+
+
+
+
diff --git a/src/routes/(pages)/(lp)/components/lp-wave-feature-card.svelte b/src/routes/(pages)/(lp)/components/lp-wave-feature-card.svelte
new file mode 100644
index 000000000..774a18ed3
--- /dev/null
+++ b/src/routes/(pages)/(lp)/components/lp-wave-feature-card.svelte
@@ -0,0 +1,372 @@
+
+
+
+
+
+
+
+
+
+
+
+ Drips Wave
+
+
Fix. Merge. Earn — every month.
+
+ Wave turns an ecosystem's funding into a recurring sprint of merged pull requests.
+ Maintainers clear their backlog, contributors get paid for shipping, ecosystems get
+ measurable progress.
+
+
+
+
+
+
+
+
+
+
+
+ {#each [...issueLane, ...issueLane] as issue, i (i)}
+
+
+
+ {/each}
+
+
+
+
+
+
+ {#each [...applicantLane, ...applicantLane] as applicant, i (i)}
+
+
+
+ {/each}
+
+
+
+
+
+
+ {#each [...withdrawLane, ...withdrawLane] as grant, i (i)}
+
+
+
+ {/each}
+
+
+
+
+
+
+
diff --git a/src/routes/(pages)/(lp)/solutions/wave/+page.svelte b/src/routes/(pages)/(lp)/solutions/wave/+page.svelte
index 38f617ec5..627b8ea3e 100644
--- a/src/routes/(pages)/(lp)/solutions/wave/+page.svelte
+++ b/src/routes/(pages)/(lp)/solutions/wave/+page.svelte
@@ -1,106 +1,573 @@
-
-
- {#snippet usecase_badge()}
- Wave
- {/snippet}
- {#snippet headline()}
- Reward open-source contributions fairly and transparently
- {/snippet}
- {#snippet description()}
- Waves turn open-source sprints into on-chain funding cycles. Ecosystems launch recurring Waves
- to reward measurable impact — all tracked from issue to fund distribution.
- {/snippet}
-
-
-
- {#snippet illustration()}
-
- {/snippet}
- {#snippet headline()}
- What It Enables
- {/snippet}
- {#snippet line_items()}
-
- Launch monthly “Waves” with a USD-denominated reward pool tied to approved repositories.
-
-
- Vet and sync GitHub projects through transparent onboarding.
-
-
- Contributors earn points for merged PRs, and every point translates into a share of the
- reward.
-
-
- At the end of each cycle funds are distributed to contributors on-chain.
-
- {/snippet}
-
-
-
- {#snippet headline()}
- Want fair, on-chain rewards for your community?
- {/snippet}
- {#snippet description()}
- Our team can walk you through how Drips fits into your workflow, help you design repeatable
- funding cycles, and show you how to reward meaningful work with full on-chain accountability.
- {/snippet}
-
-
-
- {#snippet illustration()}
-
- {/snippet}
- {#snippet headline()}
- Who It's For
- {/snippet}
-
- {#snippet line_items()}
-
- Ecosystems: Drive developer activity, launch recurring funding cycles, manage applicants and
- distributions in a unified flow.
-
-
- Maintainers: Attract high-quality contributors, grow the community, set issue priorities, sync
- repos, and track contribution transparently.
-
- {/snippet}
-
-
-
- {#snippet illustration()}
-
- {/snippet}
- {#snippet headline()}
- Why It Matters
- {/snippet}
- {#snippet description()}
- Drips Wave captures the entire funding lifecycle. From proposal to contribution, verification,
- and fund allocation. Built on the Drips protocol, it’s engineered for open ecosystems committed
- to fair, transparent rewarding of public goods.
- {/snippet}
-
+
+
+
+
+
+ Drips Wave
+
+
Fix. Merge. Earn — every month.
+
+ Wave turns an ecosystem's funding into a recurring sprint of merged pull requests. Maintainers
+ clear their backlog. Contributors get paid for shipping. Ecosystems get measurable progress,
+ not promises.
+
+ Reward pool
+ ${liveWave.wave.budgetUSD?.toLocaleString?.() ?? liveWave.wave.budgetUSD}
+
+
+
+ {:else if loadingLive}
+
+
+
+
+
+
+
+
+ {:else}
+
+
+
+ No active Waves right now — check back soon.
+
+
+
+
+ {/if}
+
+
+
+
+
+
+ How it works
+
The anatomy of a Wave
+
+ One predictable rhythm. Three roles, each with their own job to do. Most Waves run on a
+ monthly cycle.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Live on Stellar
+
The first Wave Program runs on Stellar
+
+ Stellar Development Foundation runs a monthly Wave across the Stellar open-source ecosystem.
+ Maintainers across the network apply their repos, contributors ship issues, and the pool
+ pays out at the end of each cycle.
+
+ {#each issues as issue, i (issue.number)}
+
+ {/each}
+
+
+
+
+
+
+
+
+ #{activeIssue.number}
+ {activeIssue.title}
+
+
+
+
+
+
+ Today the AMM only supports single-pool swaps. To compete with other DEXs on Soroban, we
+ need a router that finds the best path across two or three pools and atomically executes
+ the trade in a single transaction.
+
+
+ Implementation should live alongside the existing pool contract under
+ contracts/router/, with TypeScript bindings regenerated so the frontend can
+ call it through our existing SDK without ceremony.
+
+
+ Scope
+
+
+
A Rust router contract supporting up to 3-hop paths between SAC pairs.
+
Slippage protection (min-out parameter) with a clear revert reason.
+
A test harness covering happy path, deep slippage, and price-impact edge cases.
+
+
+ Bonus points for benchmarking against a single-pool swap to confirm the routing overhead
+ is acceptable, and updating the docs with a short trader-facing walkthrough.
+
+ {@render stageHeader(
+ '1',
+ 'Maintainers add issues',
+ 'Maintainers pull issues from their backlog into the Wave Program and assign each a complexity — Trivial, Medium, or High — that determines its Points value.',
+ )}
+
+
+
+
+
+
+
+ {@render connector('down')}
+
+
+
+ {@render stageHeader(
+ '2',
+ 'Contributors solve issues',
+ 'Contributors browse, apply, and merge PRs over one week. Every resolved issue awards Points and pushes the leaderboard live.',
+ )}
+
+
+
+
+
+
+
+ {@render connector('up')}
+
+
+
+ {@render stageHeader(
+ '3',
+ 'Rewards are distributed',
+ 'When the Wave closes, the reward pool splits by Points share. Contributors withdraw on-chain — no spreadsheets, no manual accounting.',
+ )}
+
+
+
+
diff --git a/static/assets/wave/mock-avatars/aspen-rs.svg b/static/assets/wave/mock-avatars/aspen-rs.svg
new file mode 100644
index 000000000..0ea41ea41
--- /dev/null
+++ b/static/assets/wave/mock-avatars/aspen-rs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/aurorae.svg b/static/assets/wave/mock-avatars/aurorae.svg
new file mode 100644
index 000000000..46ed1e0af
--- /dev/null
+++ b/static/assets/wave/mock-avatars/aurorae.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/basilisk.svg b/static/assets/wave/mock-avatars/basilisk.svg
new file mode 100644
index 000000000..c9cb7a654
--- /dev/null
+++ b/static/assets/wave/mock-avatars/basilisk.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/cinder-x.svg b/static/assets/wave/mock-avatars/cinder-x.svg
new file mode 100644
index 000000000..98778eeda
--- /dev/null
+++ b/static/assets/wave/mock-avatars/cinder-x.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/citrine.svg b/static/assets/wave/mock-avatars/citrine.svg
new file mode 100644
index 000000000..7d86190b4
--- /dev/null
+++ b/static/assets/wave/mock-avatars/citrine.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/corvid.svg b/static/assets/wave/mock-avatars/corvid.svg
new file mode 100644
index 000000000..0bdfe14da
--- /dev/null
+++ b/static/assets/wave/mock-avatars/corvid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/crimson.svg b/static/assets/wave/mock-avatars/crimson.svg
new file mode 100644
index 000000000..846e6d75d
--- /dev/null
+++ b/static/assets/wave/mock-avatars/crimson.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/drift-codes.svg b/static/assets/wave/mock-avatars/drift-codes.svg
new file mode 100644
index 000000000..3da4c35a3
--- /dev/null
+++ b/static/assets/wave/mock-avatars/drift-codes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/ember-cs.svg b/static/assets/wave/mock-avatars/ember-cs.svg
new file mode 100644
index 000000000..9a1627b8a
--- /dev/null
+++ b/static/assets/wave/mock-avatars/ember-cs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/fern-net.svg b/static/assets/wave/mock-avatars/fern-net.svg
new file mode 100644
index 000000000..6a2d9fe02
--- /dev/null
+++ b/static/assets/wave/mock-avatars/fern-net.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/glade-rs.svg b/static/assets/wave/mock-avatars/glade-rs.svg
new file mode 100644
index 000000000..fec47e604
--- /dev/null
+++ b/static/assets/wave/mock-avatars/glade-rs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/helio-77.svg b/static/assets/wave/mock-avatars/helio-77.svg
new file mode 100644
index 000000000..1a654cf46
--- /dev/null
+++ b/static/assets/wave/mock-avatars/helio-77.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/helix-77.svg b/static/assets/wave/mock-avatars/helix-77.svg
new file mode 100644
index 000000000..d322b58c3
--- /dev/null
+++ b/static/assets/wave/mock-avatars/helix-77.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/horizon42.svg b/static/assets/wave/mock-avatars/horizon42.svg
new file mode 100644
index 000000000..5f09b15e8
--- /dev/null
+++ b/static/assets/wave/mock-avatars/horizon42.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/indigo-dev.svg b/static/assets/wave/mock-avatars/indigo-dev.svg
new file mode 100644
index 000000000..76245c69a
--- /dev/null
+++ b/static/assets/wave/mock-avatars/indigo-dev.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/kepler-77.svg b/static/assets/wave/mock-avatars/kepler-77.svg
new file mode 100644
index 000000000..a3c38dab4
--- /dev/null
+++ b/static/assets/wave/mock-avatars/kepler-77.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/kovri-h.svg b/static/assets/wave/mock-avatars/kovri-h.svg
new file mode 100644
index 000000000..e3baa5810
--- /dev/null
+++ b/static/assets/wave/mock-avatars/kovri-h.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/lattice-fox.svg b/static/assets/wave/mock-avatars/lattice-fox.svg
new file mode 100644
index 000000000..6023a22cd
--- /dev/null
+++ b/static/assets/wave/mock-avatars/lattice-fox.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/lattice-rs.svg b/static/assets/wave/mock-avatars/lattice-rs.svg
new file mode 100644
index 000000000..14621cd75
--- /dev/null
+++ b/static/assets/wave/mock-avatars/lattice-rs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/lumen-codes.svg b/static/assets/wave/mock-avatars/lumen-codes.svg
new file mode 100644
index 000000000..8b972abf9
--- /dev/null
+++ b/static/assets/wave/mock-avatars/lumen-codes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/mango-builds.svg b/static/assets/wave/mock-avatars/mango-builds.svg
new file mode 100644
index 000000000..cd1c0831a
--- /dev/null
+++ b/static/assets/wave/mock-avatars/mango-builds.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/mantle-rs.svg b/static/assets/wave/mock-avatars/mantle-rs.svg
new file mode 100644
index 000000000..35d720aee
--- /dev/null
+++ b/static/assets/wave/mock-avatars/mantle-rs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/meridian-dev.svg b/static/assets/wave/mock-avatars/meridian-dev.svg
new file mode 100644
index 000000000..dc544c9df
--- /dev/null
+++ b/static/assets/wave/mock-avatars/meridian-dev.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/mira-codes.svg b/static/assets/wave/mock-avatars/mira-codes.svg
new file mode 100644
index 000000000..1dda435d2
--- /dev/null
+++ b/static/assets/wave/mock-avatars/mira-codes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/mosaic.svg b/static/assets/wave/mock-avatars/mosaic.svg
new file mode 100644
index 000000000..73e16a86c
--- /dev/null
+++ b/static/assets/wave/mock-avatars/mosaic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/nettle.svg b/static/assets/wave/mock-avatars/nettle.svg
new file mode 100644
index 000000000..9cac256b3
--- /dev/null
+++ b/static/assets/wave/mock-avatars/nettle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/nexa-77.svg b/static/assets/wave/mock-avatars/nexa-77.svg
new file mode 100644
index 000000000..ac04533c3
--- /dev/null
+++ b/static/assets/wave/mock-avatars/nexa-77.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/nodemonk.svg b/static/assets/wave/mock-avatars/nodemonk.svg
new file mode 100644
index 000000000..a89911d85
--- /dev/null
+++ b/static/assets/wave/mock-avatars/nodemonk.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/nyx-eth.svg b/static/assets/wave/mock-avatars/nyx-eth.svg
new file mode 100644
index 000000000..3c54c1ab9
--- /dev/null
+++ b/static/assets/wave/mock-avatars/nyx-eth.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/okto-codes.svg b/static/assets/wave/mock-avatars/okto-codes.svg
new file mode 100644
index 000000000..bc84111e6
--- /dev/null
+++ b/static/assets/wave/mock-avatars/okto-codes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/omega-z.svg b/static/assets/wave/mock-avatars/omega-z.svg
new file mode 100644
index 000000000..c706acc9d
--- /dev/null
+++ b/static/assets/wave/mock-avatars/omega-z.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/ophelia.dev.svg b/static/assets/wave/mock-avatars/ophelia.dev.svg
new file mode 100644
index 000000000..861b1683d
--- /dev/null
+++ b/static/assets/wave/mock-avatars/ophelia.dev.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/orbit-jay.svg b/static/assets/wave/mock-avatars/orbit-jay.svg
new file mode 100644
index 000000000..2c970b67b
--- /dev/null
+++ b/static/assets/wave/mock-avatars/orbit-jay.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/parallax.svg b/static/assets/wave/mock-avatars/parallax.svg
new file mode 100644
index 000000000..ec79d2dca
--- /dev/null
+++ b/static/assets/wave/mock-avatars/parallax.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/pasta-stream.svg b/static/assets/wave/mock-avatars/pasta-stream.svg
new file mode 100644
index 000000000..d738b547d
--- /dev/null
+++ b/static/assets/wave/mock-avatars/pasta-stream.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/photon-9.svg b/static/assets/wave/mock-avatars/photon-9.svg
new file mode 100644
index 000000000..edfda819e
--- /dev/null
+++ b/static/assets/wave/mock-avatars/photon-9.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/prism-dev.svg b/static/assets/wave/mock-avatars/prism-dev.svg
new file mode 100644
index 000000000..07912c363
--- /dev/null
+++ b/static/assets/wave/mock-avatars/prism-dev.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/quill-rs.svg b/static/assets/wave/mock-avatars/quill-rs.svg
new file mode 100644
index 000000000..8702de4ad
--- /dev/null
+++ b/static/assets/wave/mock-avatars/quill-rs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/raven-codes.svg b/static/assets/wave/mock-avatars/raven-codes.svg
new file mode 100644
index 000000000..3d67c085a
--- /dev/null
+++ b/static/assets/wave/mock-avatars/raven-codes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/reverb-dev.svg b/static/assets/wave/mock-avatars/reverb-dev.svg
new file mode 100644
index 000000000..5d67ec0fa
--- /dev/null
+++ b/static/assets/wave/mock-avatars/reverb-dev.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/sora-builds.svg b/static/assets/wave/mock-avatars/sora-builds.svg
new file mode 100644
index 000000000..5437d9ec9
--- /dev/null
+++ b/static/assets/wave/mock-avatars/sora-builds.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/spire-dev.svg b/static/assets/wave/mock-avatars/spire-dev.svg
new file mode 100644
index 000000000..018501ffb
--- /dev/null
+++ b/static/assets/wave/mock-avatars/spire-dev.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/sterling-dev.svg b/static/assets/wave/mock-avatars/sterling-dev.svg
new file mode 100644
index 000000000..632c6ecac
--- /dev/null
+++ b/static/assets/wave/mock-avatars/sterling-dev.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/tinder-rs.svg b/static/assets/wave/mock-avatars/tinder-rs.svg
new file mode 100644
index 000000000..435373723
--- /dev/null
+++ b/static/assets/wave/mock-avatars/tinder-rs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/velorum.svg b/static/assets/wave/mock-avatars/velorum.svg
new file mode 100644
index 000000000..0f2126d8f
--- /dev/null
+++ b/static/assets/wave/mock-avatars/velorum.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/vortex-x.svg b/static/assets/wave/mock-avatars/vortex-x.svg
new file mode 100644
index 000000000..cc9c130a9
--- /dev/null
+++ b/static/assets/wave/mock-avatars/vortex-x.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/wren-rs.svg b/static/assets/wave/mock-avatars/wren-rs.svg
new file mode 100644
index 000000000..721882f67
--- /dev/null
+++ b/static/assets/wave/mock-avatars/wren-rs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/assets/wave/mock-avatars/zephyr-stack.svg b/static/assets/wave/mock-avatars/zephyr-stack.svg
new file mode 100644
index 000000000..be3df3f19
--- /dev/null
+++ b/static/assets/wave/mock-avatars/zephyr-stack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file