From ab49edc60b25831a7953d175607bcd55d9f32371 Mon Sep 17 00:00:00 2001
From: Akira Taguchi <31825085+lambdakilo@users.noreply.github.com>
Date: Wed, 5 Aug 2026 13:06:03 +0300
Subject: [PATCH] feat: create static bounty listing view
---
src/app.html | 5 ++-
src/lib/components/BountyCard.svelte | 63 ++++++++++++++++++++++++++++
src/lib/format.ts | 3 ++
src/lib/types/bounty.ts | 9 ++++
src/routes/+page.svelte | 46 +++++++++++++++++---
src/routes/layout.css | 21 ++++++++++
6 files changed, 141 insertions(+), 6 deletions(-)
create mode 100644 src/lib/components/BountyCard.svelte
create mode 100644 src/lib/format.ts
create mode 100644 src/lib/types/bounty.ts
diff --git a/src/app.html b/src/app.html
index b6a3073..b6816cc 100644
--- a/src/app.html
+++ b/src/app.html
@@ -6,7 +6,10 @@
%sveltekit.head%
-
+
%sveltekit.body%
diff --git a/src/lib/components/BountyCard.svelte b/src/lib/components/BountyCard.svelte
new file mode 100644
index 0000000..2b8399d
--- /dev/null
+++ b/src/lib/components/BountyCard.svelte
@@ -0,0 +1,63 @@
+
+
+
+
+
+ {statusBadge[bounty.status].label}
+
+
+ {formatSats(bounty.amountSats)}
+
+
+ {bounty.title}
+ {#if bounty.tags.length > 0}
+
+ {#each bounty.tags as tag (tag)}
+ -
+ #{tag}
+
+ {/each}
+
+ {/if}
+
diff --git a/src/lib/format.ts b/src/lib/format.ts
new file mode 100644
index 0000000..1640e60
--- /dev/null
+++ b/src/lib/format.ts
@@ -0,0 +1,3 @@
+export function formatSats(sats: number): string {
+ return `${sats.toLocaleString('en-US')} sats`;
+}
diff --git a/src/lib/types/bounty.ts b/src/lib/types/bounty.ts
new file mode 100644
index 0000000..dbacfa5
--- /dev/null
+++ b/src/lib/types/bounty.ts
@@ -0,0 +1,9 @@
+export type BountyStatus =
+ 'open' | 'in-progress' | 'in-dispute' | 'claimed' | 'cancelled';
+
+export interface Bounty {
+ title: string;
+ amountSats: number;
+ status: BountyStatus;
+ tags: string[];
+}
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index f5639d1..3f51e88 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -1,5 +1,41 @@
-Welcome to SvelteKit
-
- Visit svelte.dev/docs/kit to read the
- documentation
-
+
+
+
+ SatCode — Bounties
+
+
+
+ Bounties
+
+ Software bounties organized on Nostr, paid in Bitcoin.
+
+
+ {#each bounties as bounty (bounty.title)}
+
+ {/each}
+
+
diff --git a/src/routes/layout.css b/src/routes/layout.css
index cd67023..4d2f313 100644
--- a/src/routes/layout.css
+++ b/src/routes/layout.css
@@ -1,3 +1,24 @@
@import 'tailwindcss';
@plugin '@tailwindcss/forms';
@plugin '@tailwindcss/typography';
+
+@theme {
+ --color-bitcoin-50: #fff7ed;
+ --color-bitcoin-100: #ffedd5;
+ --color-bitcoin-200: #fed7aa;
+ --color-bitcoin-300: #fdba74;
+ --color-bitcoin-400: #fb923c;
+ --color-bitcoin-500: #f7931a; /* canonical Bitcoin orange */
+ --color-bitcoin-600: #ea7c0a;
+ --color-bitcoin-700: #c2620a;
+ --color-bitcoin-800: #9a4e0f;
+ --color-bitcoin-900: #7c3f10;
+ --color-bitcoin-950: #431f06;
+ --color-surface-300: #444444;
+ --color-surface-400: #333333;
+ --color-surface-500: #2a2a2a;
+ --color-surface-600: #222222;
+ --color-surface-700: #1a1a1a;
+ --color-surface-800: #111111;
+ --color-surface-900: #0a0a0a;
+}