_
_____ ___ / | / / ____ _ __ ____ _
/ ___// _ \ / |/ // __ \ | / // __ `/
/ / / __// /| // /_/ / |/ // /_/ /
/_/ \___//_/ |_/ \____/|___/ \__,_/
Lightning-fast, exhaustive skill icons for your GitHub profile and READMEs.
Ren0va provides a high-performance HTTP API to generate stitched SVG grids of developer tool icons. It serves as a performant and flexible alternative to existing skill-sharing tools, offering an exhaustive icon set and the ability to serve custom user-uploaded SVGs at scale.
Ren0va is designed for zero-friction integration. You can embed icons directly into your markdown files using an <img> tag or a standard markdown image link.
Construct a URL with the icons you need, separated by commas.
For professional centering in your GitHub profile, use the HTML snippet:
<p align="center">
<img src="https://ren0va.amaanworks.me/icons?i=react,typescript,supabase,cloudflare,astro&theme=dark&perline=5" alt="My Skills" />
</p>Visit ren0va.amaanworks.me to browse the full library.
- Use the interactive selector to pick your skills.
- Customize the theme (Light/Dark) and the layout (Icons per line).
- Copy the generated
<img>tag and paste it directly into your GitHub README for instant integration.
Ren0va ships with an exhaustive set of default icons. Below is a categorized sample of available identifiers (case-insensitive):
| Category | Icons |
|---|---|
| Frontend | react, nextjs, astro, typescript, vue, angular, tailwind, bootstrap |
| Backend/DB | nodejs, go, python, rust, postgres, supabase, mongodb, redis |
| DevOps/Tools | docker, kubernetes, aws, cloudflare, github, git, ansible, linux |
| Design/Others | figma, photoshop, blender, aftereffects, arduino, raspberrypi |
For the full exhaustive list, search via the landing page.
If an icon is missing or you need a personal branding element, Ren0va supports custom SVG hosting:
- Upload: Go to the landing page and navigate to the "Contribute/Custom" section.
- Normalize: Upload your SVG. The browser-side engine will normalize the scale, center the logo, and wrap it in a standardized Ren0va tile.
- Preview: View how your icon looks in both light and dark themes.
- Deploy: Once uploaded, you receive a unique ID (e.g.,
custom:{uuid}/{name}). - Use: Include this ID in your comma-separated list:
?i=react,custom:my-id.
Ren0va is designed for maximum throughput and minimal runtime latency. The architecture is split between a heavy build pipeline and a zero-dependency edge runtime.
graph TD
subgraph Local Build Pipeline
R[Raw SVGs /icons/raw-svg] --> P[scripts/process.ts]
P -- Normalize/Scale/Tile --> PS[Processed SVGs /icons/processed-svg]
PS --> B[scripts/build.ts]
B -- Stringify/Map --> IJ[icons.json - In-memory Bundle]
A[landing.ts / landing.css] --> E[scripts/embed-landing.ts]
E -- Pure Inline Injection --> LA[src/landing-assets.ts]
end
subgraph Runtime - Cloudflare Worker
REQ[Incoming GET /icons] --> W[src/worker.ts]
W -- Typo Correction --> FS[src/fuzzy.ts - Levenshtein]
FS -- Resolution/Alias --> IT[src/icons.ts]
IT --> TYPE{Icon Type}
TYPE -- Built-in --> K[Lookup icons.json Map]
TYPE -- Custom --> S3[Supabase Storage Fetch]
K --> G[src/generate.ts]
S3 --> G
G -- Grid Calculation/SVG Stitching --> RES[Final SVG Response]
end
subgraph Security Layer
S3 -.-> SEC[Server-Side Signed URLs]
SEC -.-> AUTH[Supabase Auth Service]
end
- Server-Side Secret Management: Unlike typical client-side implementations, Ren0va handles all communication with Supabase on the server side (Cloudflare Worker). Secure credentials and signed-url logic never touch the client browser, preventing token exposure and ensuring that custom icon fetching is strictly controlled.
- Fuzzy Matching (Levenshtein Distance): The
src/fuzzy.tsmodule implements the Levenshtein distance algorithm to handle typos. If a user requeststypscript, the system resolves it totypescriptin O(n) time against the icon map, preventing broken image renders. - Atomic Build System: The project uses a multi-stage build process.
process.tsstandardizes raw SVGs into 48x48 tiles with consistent padding and corner radii, whilebuild.tscompiles these into a singleicons.jsonto eliminate filesystem I/O at runtime. - Pure Inline Performance: To achieve near-zero Cumulative Layout Shift (CLS) and instant interaction on the landing page,
scripts/embed-landing.tsinjects critical assets directly into the build. The frontend uses explicitly vanilla CSS and inline JS—no heavy frameworks or hydration cycles. - Theme Fallback Engine: The
resolveIconlogic handles dark/light variant resolution with intelligent fallbacks, ensuring that if a specific theme variant is missing, a legible alternative is served without error.
Below are the real-world performance numbers gathered from the production environment using the built-in Server-Timing headers and k6 load testing.
| Request Type | Internal Logic (resolve) |
Grid Generation (generate) |
Total Worker Runtime |
|---|---|---|---|
| Default Icons | < 0.01ms | < 0.01ms | 0.00ms* |
| Custom Icons | ~650ms (S3 Fetch) | < 0.01ms | ~650ms |
*Note: 0.00ms indicates the logic is executed entirely in-memory at the edge, finishing faster than the system's high-resolution timer can increment.
high-concurrency load test was performed using k6 against the production edge endpoint:
| Metric | Result |
|---|---|
| Success Rate | 100% (Zero Failures) |
| Total Requests | 1,395 (over 30 seconds) |
| Average Latency | 113ms |
| P95 Latency | 124ms |
| Throughput | ~46.2 reqs/sec (10 Concurrent VUs) |
- Compute: Cloudflare Workers (V8 Edge Runtime)
- Logic: TypeScript (Strict Mode)
- UI: Astro (Zero-JS by default) + Vanilla CSS
- Storage: Supabase (S3-compatible Object Storage for custom assets)
- Tooling: Wrangler, TSX, Levenshtein-algo
| Script | Command | Description |
|---|---|---|
dev |
npm run dev |
Starts the Wrangler local development server for the Worker. |
process |
npm run process |
Normalizes and tiles all SVGs in icons/raw-svg/ into icons/processed-svg/. |
build:icons |
npm run build:icons |
Scans processed SVGs and generates the icons.json manifest. |
build:astro |
npm run build:astro |
Compiles the Astro landing page. |
build:embed |
npm run build:embed |
Injects landing page assets into the source for inline delivery. |
build |
npm run build |
Orchestrates the entire pipeline (Icons → Astro → Embed). |
deploy |
npm run deploy |
Full build followed by deployment to Cloudflare production. |
-
Clone the repository:
git clone https://github.com/dexisback/ren0va.git cd ren0va -
Install dependencies:
npm install
-
Local Development:
npm run dev
-
Deployment: (Requires Cloudflare Authentication)
npm run deploy
A huge thanks to the creators of the open-source fonts used in this project:
- Soria: A beautiful, modern serif font.
- Skyscrapers: Used for high-impact typography.
Both are stored in
public/fonts/and serve as the visual backbone of the Ren0va brand.
Special thanks to skillicons.dev. Many of the default icons in this library were sourced from their repository under fair use, providing the foundational set for our exhaustive library.
Built with ❣️ by @dextertwts/amaan.