diff --git a/README.md b/README.md
index 6a03a01..d40aef0 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,38 @@
# badgedex
-BadgeDex
\ No newline at end of file
+BadgeDex
+
+# BadgeDex API – URL Paraméterek
+
+Az alábbi paraméterekkel szabályozhatod a `/badge` végpont működését:
+
+| Paraméter | Alapértelmezett érték | Leírás | Példa értékek |
+|-------------|-----------------------|----------------------------------------------------------------------------------------|------------------------------|
+| `icon` | `portainer` | A SimpleIcons ikon neve (kisbetű, kötőjellel). | `github`, `docker`, `nginx` |
+| `label` | `Portainer` | A badge-en megjelenő szöveg. | `MyApp`, `Status` |
+| `bg` | `#f0f0f0` | Háttérszín (hex vagy CSS színnév). | `#fff`, `#222`, `red` |
+| `color` | `#000000` | Szöveg színe (hex vagy CSS színnév). | `#333`, `white` |
+| `size` | `24` | Ikon (és badge) magassága pixelben. | `16`, `32`, `64` |
+| `labelpos` | `right` | Szöveg pozíciója az ikonhoz képest: `right`, `left`, `above`, `below`. | `left`, `above` |
+| `fontweight`| `normal` | Szöveg vastagsága (`normal`, `bold`, `lighter`, szám is lehet pl. `600`). | `bold`, `600` |
+
+## Példák
+
+- **Alap badge:**
+ `/badge`
+
+- **GitHub ikon, piros háttér, fehér szöveg:**
+ `/badge?icon=github&bg=red&color=white`
+
+- **Szöveg balra, ikon jobbra:**
+ `/badge?labelpos=left`
+
+- **Szöveg az ikon fölött, félkövér betű:**
+ `/badge?labelpos=above&fontweight=bold`
+
+- **Nagyobb ikon és szöveg:**
+ `/badge?size=48`
+
+---
+
+A badge SVG formátumban tér vissza, így közvetlenül beilleszthető HTML-be vagy Markdown
\ No newline at end of file
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..26032f3
--- /dev/null
+++ b/index.js
@@ -0,0 +1,92 @@
+const express = require('express');
+const axios = require('axios');
+
+const app = express();
+const PORT = process.env.PORT || 3000;
+
+app.get('/badge', async (req, res) => {
+ const {
+ icon = 'portainer',
+ label = 'Portainer',
+ bg = '#f0f0f0',
+ color = '#000000',
+ size = 24,
+ labelpos = 'right', // lehet: 'right', 'left', 'above', 'below'
+ fontweight = 'normal', // új paraméter, alapértelmezett: normal
+ } = req.query;
+
+ try {
+ // Ikon letöltése
+ const iconUrl = `https://cdn.simpleicons.org/${icon}?viewbox=auto&size=${size}`;
+ const iconResponse = await axios.get(iconUrl, { responseType: 'text' });
+ if (iconResponse.status !== 200) {
+ return res.status(404).send('Icon not found');
+ }
+ const iconSVG = iconResponse.data;
+
+ // Badge méretek
+ const padding = 10;
+ const iconSize = parseInt(size);
+ const fontSize = Math.round(iconSize * 0.6); // Font size az ikon méret 60%-a
+ const textPadding = Math.round(iconSize * 0.4); // Dinamikus: size 40%-a
+ const radius = 8;
+ const approxCharWidth = fontSize * 0.6;
+ const textWidth = label.length * approxCharWidth;
+
+ let width, height, iconGroup, textElem;
+
+ // Szebb, élsimított font shields.io stílusban
+ const fontFamily = "Verdana,Geneva,DejaVu Sans,sans-serif";
+ const fontWeight = fontweight; // paraméterből
+
+ if (labelpos === 'above' || labelpos === 'below') {
+ width = Math.max(iconSize, textWidth) + padding * 2;
+ height = padding * 2 + iconSize + textPadding + fontSize;
+ if (labelpos === 'above') {
+ // Szöveg felül, ikon alul
+ textElem = `${label}`;
+ iconGroup = `${iconSVG}`;
+ } else {
+ // Szöveg alul, ikon felül
+ iconGroup = `${iconSVG}`;
+ textElem = `${label}`;
+ }
+ } else if (labelpos === 'left') {
+ width = padding * 2 + iconSize + textPadding + textWidth;
+ height = Math.max(iconSize + padding * 2, fontSize + padding * 2);
+ // Szöveg balra, ikon jobbra (függőleges közép)
+ textElem = `${label}`;
+ iconGroup = `${iconSVG}`;
+ } else {
+ width = padding * 2 + iconSize + textPadding + textWidth;
+ height = Math.max(iconSize + padding * 2, fontSize + padding * 2);
+ // Alapértelmezett: ikon balra, szöveg jobbra (függőleges közép)
+ iconGroup = `${iconSVG}`;
+ textElem = `${label}`;
+ }
+
+ // SVG badge string összefűzéssel, szöveg árnyékkal
+ const svg = `
+