mirror of
https://github.com/Such-Software/such.software.git
synced 2026-10-17 05:32:05 +02:00
chore(apps): drop "AI-powered", sort the list reverse alphabetically
Suchoice's tagline was "AI-powered decision making", which named the implementation instead of the thing you get. It now reads "Six ways to decide, from a coin flip to 3D dice", which is what the product page already says and is concrete enough to tell you whether you want it. Order is now derived, not hand-maintained: sortedApps sorts on name descending at render. Hand-ordering the array works right up until someone adds an app to the end and the page is quietly wrong, which is the same class of problem as a hand-maintained timing constant. Reverse alphabetical gives Vegan IQ, Suchoice, Such Moon Launch, Hash Bags, Bloomword, Bauhaus Echo. Note Suchoice sorts above Such Moon Launch: the comparison is locale-aware, so the space in "Such Moon" does not simply win on byte order the way it would with a raw string compare.
This commit is contained in:
@@ -71,7 +71,7 @@ const apps = [
|
||||
},
|
||||
{
|
||||
name: "Suchoice",
|
||||
tagline: "AI-powered decision making",
|
||||
tagline: "Six ways to decide, from a coin flip to 3D dice",
|
||||
icon: "/images/products/suchoice.png",
|
||||
color: "text-pink-600 dark:text-pink-400",
|
||||
borderColor: "border-pink-500/20",
|
||||
@@ -95,6 +95,10 @@ const apps = [
|
||||
},
|
||||
];
|
||||
|
||||
// Reverse alphabetical for now. Derived rather than hand-ordered, so adding an app
|
||||
// cannot leave the page in an order someone has to remember to fix.
|
||||
const sortedApps = [...apps].sort((a, b) => b.name.localeCompare(a.name));
|
||||
|
||||
export default function LinksPage() {
|
||||
return (
|
||||
<main className="relative min-h-screen flex flex-col items-center bg-background text-foreground">
|
||||
@@ -104,7 +108,7 @@ export default function LinksPage() {
|
||||
<p className="text-muted-foreground text-center mb-10">Our apps</p>
|
||||
|
||||
<div className="grid grid-cols-1 sm:grid-cols-2 gap-6">
|
||||
{apps.map((app, i) => (
|
||||
{sortedApps.map((app, i) => (
|
||||
<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">
|
||||
|
||||
Reference in New Issue
Block a user