- π Project Overview
- β¨ Features
- π» Technologies
- π Requirements
- π οΈ Setup Instructions
- π Usage
- π Fish List
- πΈ Screenshots
GitHub Fish Tank is a web application that transforms your GitHub language statistics into a living, animated aquarium. Each programming language becomes a uniquely shaped and colored fish swimming through a customizable underwater scene. It generates an SVG image that you can embed directly in your GitHub README profile.
Important
The public instance at https://gh-fish-tank.vercel.app can be unreliable due to GitHub API rate limits. Self-hosting (Vercel or other) or using the GitHub Actions workflow to generate aquarium in your profile repository is recommended.
Tip
You can download the generated SVG file and add it directly to your repository. This way, your fish tank will work completely offline without depending on the generation service.
Note
The application is available in English language version!
- π 38 Custom-designed fish models for specific programming languages
- π Fish size is proportional to the percentage share of each language
- π¨ Customizable aquarium appearance and decorations
- π·οΈ Optional legend and labels displayed on each fish
- π README-Ready URL generation
- π« Language filtering β hide specific languages from the visualization
- πΌοΈ Playful neobrutalist visual style
- π± Full responsiveness
Backend
- Node.js
- Express
- GitHub REST API
- Vercel Functions
Frontend
- HTML
- CSS
- JavaScript
Software versions used for development:
- npm 11.6.4
- Node.js 22.14.0
- Express 4.22.1
Warning
Compatibility with earlier versions has not been tested.
Just go to gh-fish-tank.vercel.app.
OR
To run a project locally, you must have Node.js and npm installed.
Important
Download guide: Installing Node.js and npm
You will also need a GitHub Personal Access Token (optional, but recommended to avoid rate limiting).
- Download and extract the project folder.
- Navigate to the project folder in your terminal.
- Install dependencies:
$ npm install
- (Optional) Add
.envfile in the root directory:
GITHUB_TOKEN=your_github_personal_access_token_here
- Launch the development server:
npm run dev
- Access the application at http://localhost:3000.
Just copy and paste this into your markdown - and you're done!
[](https://github.com/hadoyyo)Important
Remember to change username to your own!
Customize every detail of your fish tank - from the background to decorations - with simple URL parameters.
| Name | Description | Type | Default value |
|---|---|---|---|
user |
GitHub username for the languages. | string | required |
bg |
Background color of the fish tank. | string (hex color) | #4ecdc4 |
frame |
Color of the tank's frame. | string (hex color) | #3a4a5a |
sand |
Color of the sand at the bottom. | string (hex color) | #c4a574 |
show_legend |
Displays the legend explaining fish (languages and percentage). | boolean | true |
show_language_labels |
Shows labels for programming languages (under the fish). | boolean | true |
show_bubbles |
Toggles the bubble animation. | boolean | true |
show_rocks |
Shows rocks decoration. | boolean | true |
show_plants |
Shows standard plants. Cannot be displayed together with show_plants_alt. |
boolean | true |
show_plants_alt |
Shows alternative plants. Cannot be displayed together with show_plants. |
boolean | false |
show_castle |
Shows a castle decoration. Cannot be displayed together with show_ship. |
boolean | true |
show_ship |
Shows a sunken ship decoration. Cannot be displayed together with show_castle. |
boolean | false |
show_chest |
Shows a treasure chest decoration. Cannot be displayed together with show_anubias. |
boolean | true |
show_anubias |
Shows anubias plant. Cannot be displayed together with show_chest. |
boolean | false |
show_shell |
Shows shell decoration. Cannot be displayed together with show_statue. |
boolean | true |
show_statue |
Shows a statue decoration. Cannot be displayed together with show_shell. |
boolean | false |
show_frame |
Toggles the visibility of the tank's frame. | boolean | true |
hide |
Comma-separated list of programming languages to hide from the tank (URL-encoded). Example: hide=php%2Cc hides PHP and C. |
string (comma-separated) | none |
Tip
The following pairs are mutually exclusive. If both are set to true, only the first (default) one will be displayed:
show_plants/show_plants_altβ defaults toshow_plantsshow_castle/show_shipβ defaults toshow_castleshow_chest/show_anubiasβ defaults toshow_chestshow_shell/show_statueβ defaults toshow_shell
The main color of the fish correspond to the color assigned to each language on GitHub.
List of languages that have a unique fish model:
Other languages will use one of the following models:




