A visual constructor for stunning GitHub profile README files
Dark-themed β’ Drag & Drop β’ Live Preview β’ One-click Export
π English | π·πΊ Π ΡΡΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ (Russian Version)
README Builder is a free, open-source web application that lets you visually compose a beautiful GitHub profile README.md without writing a single line of markdown manually.
You pick a GitHub username, assemble blocks (Hero, Tech Stack, Stats, Repos, Social Links, etc.), drag them into the order you want, configure each one β and the app generates the perfect markdown in real time. Then export it with one click.
| Feature | Description |
|---|---|
| π¨ Visual Block Editor | Add, remove, reorder blocks with drag & drop |
| π Live Preview | See the rendered README update instantly as you type |
| π Raw Markdown View | Switch to see the raw .md source |
| π Copy to Clipboard | Copy the full markdown with one click |
| β¬οΈ Download as .md | Save the file directly to your computer |
| π Publish to GitHub Gist | Publish publicly via GitHub Gist API (secure modal, Bearer token) |
| π English / Russian UI | Full bilingual interface, persisted in browser cookies |
| π Dark Theme | Vercel/Linear aesthetic β deep black, thin borders, subtle glows |
| π Drag & Drop | Powered by @dnd-kit/core β smooth, accessible reordering |
| πΌ Live Image Preview | Stats, streaks, trophies, badges render in real time |
| Block | Description | Powered by |
|---|---|---|
| π Wave Banner | Waving header banner with dynamic styling | capsule-render |
| π¦Έ Hero | Name + typing animation + subtitle + badge | readme-typing-svg + shields.io |
| π» Tech Stack | 30+ technologies β renders for-the-badge icons |
shields.io |
| π GitHub Stats | Commit stats card + top languages card | github-readme-stats |
| π Activity Graph | Beautiful graphical chart of repository contributions | github-readme-activity-graph |
| π Top Repos | Two pinned repository cards | github-readme-stats |
| π Social Links | Twitter, LinkedIn, Dev.to, Medium, Email, Website | shields.io |
| π₯ Streak | Commit streak calendar graph | github-readme-streak-stats |
| π Trophy | GitHub trophy collection (configurable rows/cols) | github-profile-trophy |
| βοΈ Custom Section | Free-form Markdown textarea with presets (API Ref, FAQ, etc.) | β |
Run the app locally at
http://localhost:3000after installation.
The interface is split into two panels:
- Left panel β Block list with drag handles, block library dropdown, per-block configurator, EN/RU language toggle
- Right panel β Live preview with Rendered / Raw tabs, Copy / Download / Publish Gist toolbar
- Node.js
>= 18.0.0 - npm
>= 9.0.0 - A modern browser (Chrome, Firefox, Edge, Safari)
git clone https://github.com/InfernalShark/README-Builder.git
cd README-Buildernpm installnpm run devOpen http://localhost:3000 in your browser.
npm run build
npm startIn the GitHub Username field at the top of the left sidebar, type your GitHub handle (e.g. torvalds).
This username is automatically injected into all dynamic image URLs:
github-readme-stats.vercel.app/api?username=YOUR_NAMEgithub-readme-streak-stats.herokuapp.com/?user=YOUR_NAMEgithub-profile-trophy.vercel.app/?username=YOUR_NAME
Click + Add (EN) or + ΠΠΎΠ±Π°Π²ΠΈΡΡ (RU) to open the block library. Click any block to add it to your active list.
Grab any block by its β Ώ grip handle on the left side and drag it to the desired position.
Click any block in the list to select it β the Settings panel expands at the bottom of the sidebar with all options:
- Hero: display name, subtitle, description, badge text, toggle typing animation
- Tech Stack: checkbox grid of 30+ technologies
- GitHub Stats: theme selector (15 themes), show icons toggle, hide border toggle
- Top Repos: two repository name fields, theme selector
- Social Links: Twitter, LinkedIn, Dev.to, Medium, Email, Website URL
- Streak: theme selector
- Trophy: theme, rows, columns
- Custom: title + free markdown textarea + template selector (API Ref, Install, FAQ, etc.)
Click the π eye icon on any block to temporarily exclude it from the output without deleting it.
Click EN or RU in the top-right corner of the sidebar. The language is saved in a browser cookie and remembered across sessions.
In the right preview panel:
| Button | Action |
|---|---|
| Rendered tab | Shows styled preview (like GitHub renders it) |
| Raw tab | Shows the raw .md source |
| Copy | Copies markdown to clipboard |
| Download | Saves README.md to your computer |
| Publish Gist | Opens secure modal β enter PAT β publishes to GitHub Gist |
- Click Publish Gist / ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ in the toolbar
- A secure modal dialog opens (no browser
prompt()β native custom UI) - Click "How to get a token" β opens GitHub Settings with
gistscope pre-checked - Paste your token into the field and click Publish
- A green success banner with a direct Gist link appears
π Security note: Your token is used exclusively for this single HTTPS request directly to
api.github.com. It is never stored, never logged, and never sent to any third-party server.
readme-generator/
βββ app/
β βββ layout.tsx # Root layout: Inter font, SEO metadata, favicon
β βββ page.tsx # Main two-panel layout
β βββ globals.css # Tailwind v4 base + custom scrollbars + animations
βββ types/
β βββ blocks.ts # Block types, config interfaces, defaults, constants
βββ store/
β βββ useReadmeStore.ts # Zustand: blocks[], username, CRUD, reorder
β βββ useLanguageStore.ts # Zustand: lang ('en'|'ru') β cookie 'readme_lang'
βββ lib/
β βββ i18n.ts # 60+ translation keys for EN and RU
β βββ cookies.ts # getCookie / setCookie helpers
β βββ markdownGenerator.ts # Pure fn: (username, blocks[]) β markdown string
β βββ utils.ts # cn() tailwind-merge helper
βββ components/
βββ editor/
β βββ Sidebar.tsx # Username, dnd-kit sortable list, block library
β βββ BlockConfigurator.tsx # Per-block config forms with i18n labels
βββ preview/
β βββ MarkdownPreview.tsx # Rendered/Raw tabs, Copy/Download/Gist
βββ ui/
βββ Button.tsx # Variants: primary | ghost | danger | outline
βββ Input.tsx # Text input with label, icon, hint
βββ Toggle.tsx # On/off switch
βββ LangToggle.tsx # EN / RU language switcher with cookie persistence
βββ GistModal.tsx # Secure Gist modal (PAT input, show/hide, link)
| Technology | Version | Role |
|---|---|---|
| Next.js | 16 | Framework (App Router, Turbopack dev) |
| TypeScript | 5 | Full type safety |
| Tailwind CSS | v4 | Styling with dark-first design |
| Zustand | 5 | Global state (blocks + language) |
| @dnd-kit | 6 | Accessible drag-and-drop |
| react-markdown | 9 | Markdown β React rendering |
| remark-gfm | 4 | GitHub Flavored Markdown plugin |
| rehype-raw | 7 | Raw HTML rendering (badges, images) |
| lucide-react | latest | Icon library |
| clsx + tailwind-merge | latest | Class merging utility |
Pull requests are welcome! For major changes, please open an issue first to discuss.
- Fork this repository
- Create your feature branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -m 'feat: add my feature' - Push:
git push origin feature/my-feature - Open a Pull Request
MIT Β© InfernalShark