DhanushNehru/ScribeSVG

Elevate your GitHub README with beautiful, dynamic typing SVG animations. Features custom themes, gradients, glassmorphism and layouts powered by Next.js Edge runtime for ultra-fast rendering.

โ˜… 6Forks 3TypeScriptGitHub โ†—Compare

Project website โ†—

animationdeveloper-toolsdynamicedge-functionsgithubgsochacktoberfestnextjsopen-sourceprofile-readmereadmereadme-generatorreadme-mdreadme-profilereadme-statsreadme-templatesvgsvg-animationtypingtyping-effect

README

๐ŸŒŠ ScribeSVG

ScribeSVG is a next-generation, high-performance, and visually stunning typing animation generator for GitHub profiles, repositories, and portfolios.

Built with Next.js, React, and TypeScript, and running entirely on Vercel Edge Functions, ScribeSVG generates lightweight, CSS-only animated SVGs in real-time. It requires zero JavaScript on the client rendering side, making it fully compatible with GitHub's image sandbox and Content Security Policies.

ScribeSVG Demo

Explore Features โ€ข Deploy Instantly โ€ข API Docs โ€ข Contribute


โœจ Features that make ScribeSVG Unique

Most profile widgets output static designs or struggle with browser compatibility. ScribeSVG is engineered with key differences:

  • ๐Ÿ”’ Web Sandbox Font Inlining (Google Fonts): Browsers block external network requests inside <img> tags, which breaks custom Google Fonts in normal SVGs. ScribeSVG's Edge Engine fetches, parses, and inlines fonts as Base64-encoded Woff2 data URIs directly inside the SVG, ensuring your custom fonts render flawlessly for every visitor.
  • ๐ŸŽจ Custom Layout Mockups: Renders text standalone, inside a sleek macOS Terminal Window (complete with window controls), or inside a Glassmorphic Card with glowing borders.
  • ๐ŸŒˆ Text Gradients: Native linear text gradients (SVG gradient mappings) with angle controls.
  • ๐Ÿ’ก Neon Glow Effects: Customize filter gaussian blurs to apply subtle glowing neon signs to the text and cursor.
  • โšก Edge Powered (0ms Cold Starts): The rendering API is built on Vercel Edge Runtime. It compiles to V8 isolates, delivering response times under 50ms, with global CDN caching.
  • ๐Ÿงน Short, Clean URLs: The builder only serializes non-default properties, keeping your Markdown clean and lightweight.

๐Ÿš€ Interactive Playground

ScribeSVG comes with a local, fully interactive visual builder interface. Toggle styles, add text lines, try preset themes (like Dracula, Cyberpunk, or Tokyo Night), change preview backgrounds to match GitHub Dark/Light modes, and copy code in one click.

To run it locally:

npm run dev
# or
yarn dev

Open http://localhost:3000 to view the builder playground.


๐Ÿ› ๏ธ One-Click Deploy

Host your own instance of ScribeSVG globally for free in less than 2 minutes.

Deploy with Vercel


๐Ÿ“Œ API Reference

Serve animations dynamically by appending parameters to the /api/render endpoint.

Parameter Type Default Description
lines string Hello World Semicolon-separated text lines to type. (e.g. lines=Hello;World)
layout string raw Choose frame: raw (none), terminal (macOS shell), card (glow container), minimal-border (rounded accent outline).
theme string none Pre-configured style: dracula, cyberpunk, tokyonight, nord, synthwave, sunset, matrix, gruvbox, catppuccin, monokai.
font string Fira Code Any Google Font (e.g. Orbitron, Inter) or system-safe font family.
size number 24 Font size in pixels.
color string 36bcf7 Hex code for text (without #).
gradient string none Comma-separated hex colors (without #) for linear gradient.
background string transparent Hex code for background. Set to transparent for overlay.
cursor string pipe Cursor shape: pipe (|), block (โ–ˆ), underscore (_), none.
speed number 100 Typing speed in milliseconds per character.
deleteSpeed number 50 Deletion speed in milliseconds per character.
pause number 1500 Pause duration in milliseconds after text types out.
textGlow number 0 Neon glow intensity in pixels.
center boolean false Set to true to center-align the text horizontally.
attribution boolean true Set to false to hide the small watermark.

The render API accepts at most 10 non-empty lines, 200 Unicode code points per line, and 1000 code points in total. Longer lines values and request URLs over 8192 characters return 400. Unknown layout or cursor values also return 400. XML-invalid characters in rendered text are replaced.

Out-of-range numeric values are clamped: width to 100โ€“2000, height to 40โ€“1000, size to 12โ€“120, speed and deleteSpeed to 10โ€“1000 ms, and pause to 0โ€“10000 ms.

Minimal border

Use layout=minimal-border for a rounded outline in the text color. It works with transparent backgrounds and keeps the text alignment unchanged.

https://your-domain.com/api/render?lines=Hello+World&layout=minimal-border&color=36bcf7&background=transparent&center=true

Example URL

https://your-domain.com/api/render?lines=Fullstack+Engineer;Open+Source+Contributor&layout=terminal&theme=dracula&center=true

๐Ÿค Contributing

Contributions make the open-source community an amazing place to learn and create. Any contributions you make are greatly appreciated.

See CONTRIBUTING.md for local setup, project structure, and pull request guidance.

Adding a Theme Preset

We encourage adding new beautiful themes. Simply open src/app/api/render/renderer.ts and add your custom preset to the THEMES object:

export const THEMES: Record<string, Partial<RenderOptions>> = {
  // Add your preset style details here
  mycooltheme: {
    color: '#ffffff',
    gradient: ['#color1', '#color2'],
    background: '#121212',
    cursorColor: '#color1',
    font: 'Outfit'
  }
}

Then, update the THEME_PRESETS list in src/app/page.tsx to render it in the builder UI!


๐Ÿ’– Sponsors & Backing

If you find this widget useful, please consider starring the repository or supporting the project's development.

Sponsors will be displayed prominently on the live dashboard and interactive builder website.


๐Ÿ“„ License

Distributed under the MIT License. See LICENSE for more information.

Contributors

DhanushNehrujson-open-sourceCopilotRevan0809yuka-with-data

Issues