Skip to content

Repository files navigation

README Stack logo

README Stack

Turn the tools you use into a scrolling stack for your GitHub profile.

Build your stack · Use the URL · Options · Contribute

CI status MIT license Runs on Cloudflare Workers

Scrolling stack with TypeScript, React, Next.js, Tailwind CSS, Cloudflare, and GitHub

Make yours

Open stack.rajinkhan.com, choose your tools, arrange them, and copy the finished GitHub markup. The preview updates while you work.

Live examples

These are generated by the public renderer. They are not screenshots. Click any Stack to open its exact configuration in the builder.

Frontend

Frontend preset Stack
Backend

Backend preset Stack
AI and ML

AI and ML preset Stack
Mobile

Mobile preset Stack
DevOps

DevOps preset Stack
Design

Design preset Stack

Same Stack, different settings

Every presentation control lives in the URL. These examples use the same six Tools so you can see what each combination changes.

Dark, slow, moving left
t=dark&s=slow&d=left

Dark, slow Stack moving left
Light, fast, moving right
t=light&s=fast&d=right

Light, fast Stack moving right
Transparent, compact, names hidden
t=transparent&g=compact&l=off

Transparent compact Stack without Tool names
Static, small Tools
m=static&z=small

Static Stack with small Tools
One pass
m=once

Stack that moves across once

Use it in one line

You can also write the image URL yourself. Paste this into a profile README and replace the tool IDs:

[![My stack](https://stack.rajinkhan.com/v1/stack.svg?i=typescript,react,nextdotjs,tailwindcss)](https://stack.rajinkhan.com)

The part after i= is an ordered, comma-separated list. The hosted URL returns the finished SVG directly.

Made for profile READMEs

  • 745 tools sourced from Simple Icons, Devicon, official project assets, and reviewed neutral glyphs
  • Tool names on by default, so the stack stays readable beyond the logos
  • Dark, light, and transparent treatments
  • Infinite, one-pass, and static motion
  • A useful static strip for readers who prefer reduced motion
  • Shareable builder URLs and immutable versioned image URLs
  • Self-contained SVG output with no third-party requests at render time

Stacks can contain 2 to 100 tools. Duplicate IDs are removed, invalid input returns a readable SVG error, and the service does not inspect GitHub accounts or repositories.

Tip

Try to keep a Stack under 30 Tools if you want people to actually read it. Split bigger setups into separate rows. The renderer still supports 100 Tools in one row for the psychopaths among you.

Match GitHub's theme

The builder can copy a picture snippet that switches automatically between light and dark treatments:

<a href="https://stack.rajinkhan.com/?i=typescript,react,nextdotjs,tailwindcss">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://stack.rajinkhan.com/v1/stack.svg?i=typescript%2Creact%2Cnextdotjs%2Ctailwindcss&amp;t=dark">
    <source media="(prefers-color-scheme: light)" srcset="https://stack.rajinkhan.com/v1/stack.svg?i=typescript%2Creact%2Cnextdotjs%2Ctailwindcss&amp;t=light">
    <img alt="My stack: TypeScript, React, Next.js, and Tailwind CSS" src="https://stack.rajinkhan.com/v1/stack.svg?i=typescript,react,nextdotjs,tailwindcss&amp;t=light">
  </picture>
</a>

The image links back to its builder configuration, so you can edit the same stack later.

Customize the SVG

Add options to the hosted image URL:

https://stack.rajinkhan.com/v1/stack.svg?i=typescript,react,nextdotjs&s=slow&d=right
Parameter Controls Accepted values Default
i Ordered tool IDs 2 to 100 comma-separated IDs README Stack default
t Treatment dark, light, transparent dark
s Speed slow, normal, fast normal
d Direction left, right left
g Spacing compact, comfortable comfortable
l Tool names on, off on
m Motion infinite, once, static infinite
z Tool size small, large large

Use the builder to search valid tool IDs. Successful /v1/stack.svg URLs are immutable, so an existing profile embed will not silently change when a future renderer version ships.

Development

You need Node.js 22 or newer and pnpm 9 or newer.

git clone https://github.com/rajin-khan/readme-stack.git
cd readme-stack
pnpm install --frozen-lockfile
pnpm build
pnpm dev

Open http://127.0.0.1:4173. Run the full check before opening a pull request:

pnpm build
pnpm check
pnpm test
WRANGLER_LOG_PATH=/tmp/readme-stack-wrangler.log pnpm exec wrangler deploy --dry-run

The Wrangler dry run does not contact or change a Cloudflare account.

Project notes

License and trademarks

README Stack is available under the MIT License. Third-party names and marks belong to their owners and only identify the corresponding tools. Their inclusion does not imply affiliation, sponsorship, or endorsement. Package licenses do not grant trademark rights. See the third-party notices for sources, licenses, attributions, and correction requests.

Releases

Packages

Contributors

Languages