Tweak copy and add links

This commit is contained in:
jwinterm
2026-06-01 11:10:31 -04:00
parent 4b2ae5646c
commit 254e969c36
7 changed files with 165 additions and 167 deletions
+17 -17
View File
@@ -19,19 +19,6 @@ export const metadata: Metadata = {
};
const apps = [
{
name: "Such Moon Launch",
tagline: "Vry rocket. Much landing. Wow!",
icon: "/images/products/such-moon-launch.png",
color: "text-amber-600 dark:text-amber-400",
borderColor: "border-amber-500/20",
href: "/products/such-moon-launch",
links: [
// null = render disabled "Coming Soon" button; flip to real URLs once live.
{ platform: "google" as const, href: null },
{ platform: "apple" as const, href: null },
],
},
{
name: "Vegan IQ",
tagline: "Plant-based trivia backed by real data",
@@ -68,20 +55,33 @@ const apps = [
{ platform: "apple" as const, href: "https://apps.apple.com/us/app/suchoice/id6759626658" },
],
},
{
name: "Such Moon Launch",
tagline: "Vry rocket. Much landing. Wow!",
icon: "/images/products/such-moon-launch.png",
color: "text-amber-600 dark:text-amber-400",
borderColor: "border-amber-500/20",
href: "/products/such-moon-launch",
links: [
// Google Play live; Apple in review (null renders a disabled "Coming Soon").
{ platform: "google" as const, href: "https://play.google.com/store/apps/details?id=com.suchsoftware.suchmoonlaunch" },
{ platform: "apple" as const, href: null },
],
},
];
export default function LinksPage() {
return (
<main className="relative min-h-screen flex flex-col items-center bg-background text-foreground">
<Header />
<div id="main-content" className="z-10 w-full max-w-lg mx-auto py-20 px-4 pb-24 md:pb-20">
<div id="main-content" className="z-10 w-full max-w-3xl mx-auto py-20 px-4 pb-24 md:pb-20">
<h1 className="text-3xl font-bold mb-2 text-center">Such Software</h1>
<p className="text-muted-foreground text-center mb-10">Our apps</p>
<div className="space-y-8">
<div className="grid grid-cols-1 sm:grid-cols-2 gap-6">
{apps.map((app, i) => (
<ScrollReveal key={app.name} delay={i * 0.08}>
<div className={`rounded-xl border ${app.borderColor} bg-card p-6`}>
<ScrollReveal key={app.name} delay={(i % 2) * 0.08}>
<div className={`h-full rounded-xl border ${app.borderColor} bg-card p-6`}>
<div className="flex items-center gap-4 mb-3">
<Image
src={app.icon}
+14 -14
View File
@@ -18,20 +18,6 @@ export const metadata: Metadata = {
};
const products = [
{
slug: "wownerogue",
title: "Wownerogue",
description: "A provably-fair multiplayer roguelike synced to Monero and Wownero block times. Play free in the browser, escape the dungeon, earn on-chain payouts.",
color: "orange",
icon: "/images/products/privacy-labs.png",
},
{
slug: "neroswap",
title: "Neroswap",
description: "Aggregated DEX & CEX orderbook data. Compare Monero, Wownero, and Bitcoin prices across 6 exchanges in real time.",
color: "yellow",
icon: "/images/products/neroswap.png",
},
{
slug: "webshops",
title: "Webshops",
@@ -81,6 +67,20 @@ const products = [
color: "amber",
icon: "/images/products/such-moon-launch.png",
},
{
slug: "wownerogue",
title: "Wownerogue",
description: "A provably-fair multiplayer roguelike synced to Monero and Wownero block times. Play free in the browser, escape the dungeon, earn on-chain payouts.",
color: "orange",
icon: "/images/products/privacy-labs.png",
},
{
slug: "neroswap",
title: "Neroswap",
description: "Aggregated DEX & CEX orderbook data. Compare Monero, Wownero, and Bitcoin prices across 6 exchanges in real time.",
color: "yellow",
icon: "/images/products/neroswap.png",
},
];
const colorClasses: Record<string, string> = {
+18 -14
View File
@@ -117,20 +117,24 @@ export default function WowneroguePage() {
<h2 className="text-2xl font-bold mb-6">Two Worlds</h2>
<div className="grid md:grid-cols-2 gap-6 mb-12">
<Card className="glass-card border-orange-500/20">
<h3 className="text-xl font-bold mb-2">play.wowne.ro</h3>
<p className="text-muted-foreground text-sm">
The Wownero mainnet instance: free to play, with paid entry for the Hall of Champions.
No crypto payouts, all the tension. The friendly place to learn the game.
</p>
</Card>
<Card className="glass-card border-orange-500/20">
<h3 className="text-xl font-bold mb-2">monerogue.app</h3>
<p className="text-muted-foreground text-sm">
The Monero stagenet instance, where escaping pays out stagenet XMR from a house wallet.
Stagenet coins have no real value, so it is a safe sandbox for the full payout loop.
</p>
</Card>
<a href="https://play.wowne.ro" target="_blank" rel="noopener noreferrer">
<Card className="glass-card border-orange-500/20 hover:border-orange-500/50 transition-colors cursor-pointer h-full">
<h3 className="text-xl font-bold mb-2 text-orange-600 dark:text-orange-400">play.wowne.ro &rarr;</h3>
<p className="text-muted-foreground text-sm">
The Wownero mainnet instance: free to play, with paid entry for the Hall of Champions.
No crypto payouts, all the tension. The friendly place to learn the game.
</p>
</Card>
</a>
<a href="https://monerogue.app" target="_blank" rel="noopener noreferrer">
<Card className="glass-card border-orange-500/20 hover:border-orange-500/50 transition-colors cursor-pointer h-full">
<h3 className="text-xl font-bold mb-2 text-orange-600 dark:text-orange-400">monerogue.app &rarr;</h3>
<p className="text-muted-foreground text-sm">
The Monero stagenet instance, where escaping pays out stagenet XMR from a house wallet.
Stagenet coins have no real value, so it is a safe sandbox for the full payout loop.
</p>
</Card>
</a>
</div>
<h2 className="text-2xl font-bold mb-6">How a Run Works</h2>