feat(playlists): add static playlist placeholder files for dev mode

Populate web/public/data/playlists/ with all 12 playlist slug JSON files
and update index.json so the frontend fetch calls work during local
development without requiring the index builder to have run.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
jedarden 2026-04-21 16:22:30 -04:00
parent 513ca42d7a
commit 46ff42ef84
14 changed files with 220 additions and 3 deletions

View file

@ -1 +1 @@
b1121ed6f8729796923df7ad95ee1bde41ed61f0
513ca42d7a05138470e9ed7489a8661a3ccde3ca

View file

@ -0,0 +1,10 @@
{
"slug": "best-comebacks",
"title": "Best Comebacks",
"description": "Bots that were down but never out — dramatic turnarounds and improbable victories",
"category": "comebacks",
"match_count": 0,
"created_at": "2026-04-21T00:00:00.000Z",
"updated_at": "2026-04-21T00:00:00.000Z",
"matches": []
}

View file

@ -0,0 +1,10 @@
{
"slug": "best-of-week",
"title": "Best of the Week",
"description": "This week's top matches ranked by excitement: close finishes, upsets, marathon battles, and elite clashes",
"category": "weekly",
"match_count": 0,
"created_at": "2026-04-21T00:00:00.000Z",
"updated_at": "2026-04-21T00:00:00.000Z",
"matches": []
}

View file

@ -0,0 +1,10 @@
{
"slug": "biggest-upsets",
"title": "Biggest Upsets",
"description": "Lower-rated bots triumph against higher-rated opponents",
"category": "upsets",
"match_count": 0,
"created_at": "2026-04-21T00:00:00.000Z",
"updated_at": "2026-04-21T00:00:00.000Z",
"matches": []
}

View file

@ -0,0 +1,10 @@
{
"slug": "closest-finishes",
"title": "Closest Finishes",
"description": "Matches decided by the thinnest margins — nail-biters to the very end",
"category": "close_games",
"match_count": 0,
"created_at": "2026-04-21T00:00:00.000Z",
"updated_at": "2026-04-21T00:00:00.000Z",
"matches": []
}

View file

@ -0,0 +1,10 @@
{
"slug": "domination",
"title": "Total Domination",
"description": "One-sided victories where the winner crushed all opposition",
"category": "domination",
"match_count": 0,
"created_at": "2026-04-21T00:00:00.000Z",
"updated_at": "2026-04-21T00:00:00.000Z",
"matches": []
}

View file

@ -0,0 +1,10 @@
{
"slug": "evolution-breakthroughs",
"title": "Evolution Breakthroughs",
"description": "Evolved bots defeating top-rated opponents — AI strategy milestones",
"category": "featured",
"match_count": 0,
"created_at": "2026-04-21T00:00:00.000Z",
"updated_at": "2026-04-21T00:00:00.000Z",
"matches": []
}

View file

@ -0,0 +1,10 @@
{
"slug": "featured",
"title": "Featured Matches",
"description": "Recent highlights from the ladder",
"category": "featured",
"match_count": 0,
"created_at": "2026-04-21T00:00:00.000Z",
"updated_at": "2026-04-21T00:00:00.000Z",
"matches": []
}

View file

@ -0,0 +1,10 @@
{
"slug": "highest-rated",
"title": "Clash of Titans",
"description": "Matches between the highest-rated opponents on the ladder",
"category": "featured",
"match_count": 0,
"created_at": "2026-04-21T00:00:00.000Z",
"updated_at": "2026-04-21T00:00:00.000Z",
"matches": []
}

View file

@ -1,4 +1,101 @@
{
"updated_at": "2026-03-29T00:00:00.000Z",
"playlists": []
"updated_at": "2026-04-21T00:00:00.000Z",
"playlists": [
{
"slug": "closest-finishes",
"title": "Closest Finishes",
"description": "Matches decided by the thinnest margins — nail-biters to the very end",
"category": "close_games",
"match_count": 0,
"updated_at": "2026-04-21T00:00:00.000Z"
},
{
"slug": "biggest-upsets",
"title": "Biggest Upsets",
"description": "Lower-rated bots triumph against higher-rated opponents",
"category": "upsets",
"match_count": 0,
"updated_at": "2026-04-21T00:00:00.000Z"
},
{
"slug": "best-comebacks",
"title": "Best Comebacks",
"description": "Bots that were down but never out — dramatic turnarounds and improbable victories",
"category": "comebacks",
"match_count": 0,
"updated_at": "2026-04-21T00:00:00.000Z"
},
{
"slug": "marathon-matches",
"title": "Marathon Matches",
"description": "The longest, most grueling matches — endurance-tested battles",
"category": "long_games",
"match_count": 0,
"updated_at": "2026-04-21T00:00:00.000Z"
},
{
"slug": "highest-rated",
"title": "Clash of Titans",
"description": "Matches between the highest-rated opponents on the ladder",
"category": "featured",
"match_count": 0,
"updated_at": "2026-04-21T00:00:00.000Z"
},
{
"slug": "evolution-breakthroughs",
"title": "Evolution Breakthroughs",
"description": "Evolved bots defeating top-rated opponents — AI strategy milestones",
"category": "featured",
"match_count": 0,
"updated_at": "2026-04-21T00:00:00.000Z"
},
{
"slug": "rivalry-classics",
"title": "Rivalry Classics",
"description": "The most closely contested matchups between frequent opponents",
"category": "rivalry",
"match_count": 0,
"updated_at": "2026-04-21T00:00:00.000Z"
},
{
"slug": "domination",
"title": "Total Domination",
"description": "One-sided victories where the winner crushed all opposition",
"category": "domination",
"match_count": 0,
"updated_at": "2026-04-21T00:00:00.000Z"
},
{
"slug": "new-bot-debuts",
"title": "New Bot Debuts",
"description": "First matches of newly registered bots — watch their opening games",
"category": "tutorial",
"match_count": 0,
"updated_at": "2026-04-21T00:00:00.000Z"
},
{
"slug": "season-highlights",
"title": "Season Highlights",
"description": "Top matches from the current season ranked by excitement",
"category": "season",
"match_count": 0,
"updated_at": "2026-04-21T00:00:00.000Z"
},
{
"slug": "featured",
"title": "Featured Matches",
"description": "Recent highlights from the ladder",
"category": "featured",
"match_count": 0,
"updated_at": "2026-04-21T00:00:00.000Z"
},
{
"slug": "best-of-week",
"title": "Best of the Week",
"description": "This week's top matches ranked by excitement: close finishes, upsets, marathon battles, and elite clashes",
"category": "weekly",
"match_count": 0,
"updated_at": "2026-04-21T00:00:00.000Z"
}
]
}

View file

@ -0,0 +1,10 @@
{
"slug": "marathon-matches",
"title": "Marathon Matches",
"description": "The longest, most grueling matches — endurance-tested battles",
"category": "long_games",
"match_count": 0,
"created_at": "2026-04-21T00:00:00.000Z",
"updated_at": "2026-04-21T00:00:00.000Z",
"matches": []
}

View file

@ -0,0 +1,10 @@
{
"slug": "new-bot-debuts",
"title": "New Bot Debuts",
"description": "First matches of newly registered bots — watch their opening games",
"category": "tutorial",
"match_count": 0,
"created_at": "2026-04-21T00:00:00.000Z",
"updated_at": "2026-04-21T00:00:00.000Z",
"matches": []
}

View file

@ -0,0 +1,10 @@
{
"slug": "rivalry-classics",
"title": "Rivalry Classics",
"description": "The most closely contested matchups between frequent opponents",
"category": "rivalry",
"match_count": 0,
"created_at": "2026-04-21T00:00:00.000Z",
"updated_at": "2026-04-21T00:00:00.000Z",
"matches": []
}

View file

@ -0,0 +1,10 @@
{
"slug": "season-highlights",
"title": "Season Highlights",
"description": "Top matches from the current season ranked by excitement",
"category": "season",
"match_count": 0,
"created_at": "2026-04-21T00:00:00.000Z",
"updated_at": "2026-04-21T00:00:00.000Z",
"matches": []
}