Archestra Apps HackathonSee what people are building
Back to gallery|

Codebase Aquarium

A fish tank where each GitHub repository is a fish, with abandoned repos sinking to the bottom, losing their colour, and growing algae.

Summarized Prompt

Build a full-screen app called Codebase Aquarium. CONCEPT A living aquarium where each GitHub repository is a fish. Every visual property is driven by real repository data, so the health of a codebase is legible at a glance as the health of an ecosystem. DATA (GitHub MCP server, read-only) For each repository fetch star count and creation date via search_repositories with a "repo:owner/name" query, the most recent commit date and 30-day commit count via list_commits, open pull request count via list_pull_requests, and recent workflow run conclusions via actions_list. Stagger the fetches sequentially with a short delay, since GitHub's search API rate-limits at 30 requests per minute. Render the tank immediately with placeholder fish already in motion, then populate each fish as its data arrives. If a repository fails to resolve, render it as a transparent outline with a "No Data" badge and continue. THE TANK A water surface across the top with light rippling through it, a substrate floor of sand and scattered rocks, background kelp rooted in the substrate swaying in the current, subtle glass edges at the viewport boundaries, a deep radial depth gradient, drifting caustic light rays, ambient rising bubbles, and a background school of neon minnows. THE FISH Distinct species silhouettes coloured from each project's brand identity. Size scales with star count on a compressed scale, largest at most 4x the smallest. Swimming speed scales with 30-day commits: active repos dart, quiet repos glide. Tail wiggle syncs to speed. Repository names float beside each fish and stay upright. Partition the viewport into roaming zones so fish occupy different regions and depths, with gentle pairwise avoidance so they never overlap. HEALTH STATES, from time since last commit VIBRANT within 90 days: full colour, energetic. SLOWING at 3 to 12 months: calmer, desaturated. DYING at 12 to 24 months: sinks to the lower third, turns pale grey, drifts in slow circles, body opacity drops to reveal an SVG skeleton. DERELICT over 24 months: fully skeletal, rests near the substrate, grows swaying green algae. PULL REQUEST BUBBLES Each fish emits bubbles from its mouth at a rate scaled to its open PR count. Zero open PRs means no bubbles. WATER CLARITY FROM CI HEALTH Compute the aggregate proportion of failing workflow runs. All passing means clear dark blue water. As the failure rate rises, a green murkiness overlay increases and brownish particulate drifts through the water like marine snow at a matching density. Show clarity as a percentage in the info card. THE ANCIENT ONE The repository with the earliest creation date renders larger than its stars alone justify, capped at 1.5x the largest fish, moves more slowly than any other, carries a gold aura and gold name tag, and other fish give it a wider berth. INTERACTION Hovering a fish shows a floating stats card. Clicking one opens a dark glass clipboard panel with its real stats plus a two-to-three sentence health diagnosis written by the LLM in the deadpan clinical register of a weary aquarium keeper, referencing the actual numbers. Cache each diagnosis. KEEPER'S CLIPBOARD A corner overlay holds one deadpan LLM-written line judging the whole tank from the aggregate data, in the spirit of "one specimen has not moved in four years, nobody has commented." Regenerate only on data refresh. If the LLM call fails, compose an equivalent line from the raw data rather than showing a loading state. ADOPTION Fish in DYING or DERELICT state get an "Adopt this specimen" button in their inspection panel. Healthy fish do not. Clicking it opens a confirmation dialog showing the repository name and current state; nothing is saved unless confirmed, and the dialog can be dismissed. On confirm, write repository name, state at adoption time, and an ISO timestamp to shared storage so the record survives reload and is visible to anyone who opens the app. Adopted fish get a glowing heart marker and the button becomes a disabled "Specimen Adopted". ROBUSTNESS Wrap every LLM call in try/catch with a data-derived fallback. Include a formatTimeAgo helper for relative times, used by both the tooltip and the inspection panel. Wrap the script in an IIFE so hot reloads do not throw duplicate declarations. Guard DOM lookups with null checks. Include a Refresh Data control. CONSTRAINTS Read-only throughout. Never create, modify, or comment on anything in any repository. Public repositories only. REPOSITORIES facebook/react, expressjs/express, jquery/jquery, moment/moment, angular/angular.js, request/request, bower/bower, gulpjs/gulp, Leaflet/Leaflet, lodash/lodash, vuejs/vue, home-assistant/core

MCP Servers Used

Built

Jul 26, 2026

Iterations

17 prompts

Model Used

Gemini 3.5 Flash

abolambA

@abolambA

Join Archestra Apps Hackathon

It runs until July 29.

Register now