Files
2026-07-17 14:13:27 +02:00

191 lines
7.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BadgeDex
Badge generátor szolgáltatás SVG badge-ek készítése GitHub profilokhoz és projektekhez.
A badge SVG formátumban tér vissza, így közvetlenül beilleszthető HTML-be, Markdownba, vagy `<img>` tag-be.
---
## API végpontok
### `GET /badge`
SVG badge-et generál egy [Simple Icons](https://simpleicons.org/) ikon és szöveg alapján.
| Paraméter | Kötelező | Alapértelmezett | Leírás | Példák |
|-------------|----------|-----------------|----------------------------------------------------------------------------------------|------------------------------|
| `icon` | Nem | `simpleicons` | A SimpleIcons ikon neve (kisbetű, kötőjellel). | `github`, `docker`, `nginx` |
| `label` | Nem | *(ikonnév)* | A badge-en megjelenő szöveg. Ha nincs megadva, az ikon neve jelenik meg. | `MyApp`, `Status` |
| `style` | Nem | `rect` | Badge stílusa: `rect` (négyzetes) vagy `flat` (lekerekített sarkok). | `rect`, `flat` |
| `bgicon` | Nem | `none` | Ikon háttérszín (hex vagy CSS színnév). Alapból átlátszó. | `#fff`, `#222`, `red` |
| `bglabel` | Nem | `none` | Label háttérszín (hex vagy CSS színnév). Alapból átlátszó. | `#fff`, `#222`, `red` |
| `color` | Nem | *(ikonszín)* | Szöveg színe (hex vagy CSS színnév). Ha nincs megadva, az ikon színét használja. | `#333`, `white` |
| `size` | Nem | `24` | Ikon és badge magassága pixelben (8256). | `16`, `32`, `64` |
| `labelpos` | Nem | `right` | Szöveg pozíciója az ikonhoz képest. | `right`, `left`, `above`, `below` |
| `fontweight`| Nem | `normal` | Szöveg vastagsága. | `normal`, `bold`, `600` |
#### Badge példák
```markdown
![Default](http://localhost:3000/badge)
```
```
/badge
```
```markdown
![GitHub](http://localhost:3000/badge?icon=github&bglabel=red&color=white)
```
```
/badge?icon=github&bglabel=red&color=white
```
```markdown
![React](http://localhost:3000/badge?icon=react&label=React%20expert&size=64&fontweight=bold&color=white&bgicon=red&bglabel=yellow&labelpos=right)
```
```
/badge?icon=react&label=React%20expert&size=64&fontweight=bold&color=white&bgicon=red&bglabel=yellow&labelpos=right
```
```markdown
![Docker](http://localhost:3000/badge?icon=docker&label=Docker&style=flat&bgicon=%232496ED&color=white)
```
```
/badge?icon=docker&label=Docker&style=flat&bgicon=%232496ED&color=white
```
```markdown
![Left label](http://localhost:3000/badge?icon=nginx&labelpos=left)
```
```
/badge?icon=nginx&labelpos=left
```
```markdown
![Above label](http://localhost:3000/badge?icon=vue.js&labelpos=above&fontweight=bold&size=48)
```
```
/badge?icon=vue.js&labelpos=above&fontweight=bold&size=48
```
---
### `GET /tag`
Badge-szerű SVG címkét generál szöveges tartalommal (stílus: shields.io-szerű).
| Paraméter | Kötelező | Alapértelmezett | Leírás | Példák |
|-------------|----------|-----------------|----------------------------------------------------------------------------------------|------------------------------|
| `tag` | Nem | `badgedex` | A tag tartalma (bal oldali szöveg). | `build`, `coverage`, `v1.0` |
| `label` | Nem | `BadgeDex` | A label tartalma (jobb oldali szöveg). | `passing`, `95%`, `stable` |
| `style` | Nem | `rect` | Stílus: `rect` (négyzetes) vagy `flat` (lekerekített, árnyékolt). | `rect`, `flat` |
| `bgtag` | Nem | `none` | Tag háttérszín (hex vagy CSS színnév). | `#555`, `green`, `red` |
| `bglabel` | Nem | `none` | Label háttérszín (hex vagy CSS színnév). | `#007ec6`, `blue` |
| `color` | Nem | `#000000` | Szöveg színe (hex vagy CSS színnév). | `#fff`, `white` |
| `size` | Nem | `24` | Badge magassága pixelben (8256). | `16`, `20`, `32` |
| `fontweight`| Nem | `normal` | Szöveg vastagsága. | `normal`, `bold`, `600` |
#### Tag példák
```markdown
![Default tag](http://localhost:3000/tag)
```
```
/tag
```
```markdown
![Build passing](http://localhost:3000/tag?tag=build&label=passing&bgtag=%23555&bglabel=green&color=white)
```
```
/tag?tag=build&label=passing&bgtag=%23555&bglabel=green&color=white
```
```markdown
![Coverage](http://localhost:3000/tag?tag=coverage&label=98%25&bgtag=%23555&bglabel=%23007ec6&color=white)
```
```
/tag?tag=coverage&label=98%25&bgtag=%23555&bglabel=%23007ec6&color=white
```
```markdown
![License](http://localhost:3000/tag?tag=license&label=AGPL--v3&bgtag=gray&bglabel=blue&color=white)
```
```
/tag?tag=license&label=AGPL--v3&bgtag=gray&bglabel=blue&color=white
```
```markdown
![Version](http://localhost:3000/tag?tag=version&label=v0.0.1&style=flat&bgtag=%23333&bglabel=%23007ec6&color=white)
```
```
/tag?tag=version&label=v0.0.1&style=flat&bgtag=%23333&bglabel=%23007ec6&color=white
```
```markdown
![Node.js](http://localhost:3000/tag?tag=node.js&label=22.x&bgtag=%23339933&bglabel=black&color=white&size=20)
```
```
/tag?tag=node.js&label=22.x&bgtag=%23339933&bglabel=black&color=white&size=20
```
---
### `GET /version`
A szolgáltatás aktuális verzióját adja vissza JSON formátumban.
```json
{ "badgedexVersion": "0.0.1" }
```
A verzió forrása (prioritás szerint):
1. `APP_VERSION` környezeti változó
2. `VERSION` fájl a projekt gyökerében
---
## Környezeti változók
A konfiguráció `.env` fájllal történik (lásd `.env.example`):
| Változó | Alapértelmezett | Leírás |
|-------------|-----------------|------------------------------------------------------|
| `PORT` | `3000` | A szerver portja. |
| `LOG_LEVEL` | `info` | Logolás szintje: `fatal`, `error`, `warn`, `info`, `debug`, `trace`. |
| `NODE_ENV` | `development` | Környezet: `production`, `development`, `test`. |
| `APP_VERSION` | *(nincs)* | Verzió override (opcionális, alapból a `VERSION` fájlból olvas). |
---
## Telepítés
### Node.js alkalmazásként
```bash
git clone <repo-url>
cd badgedex
npm install
npm start
```
A szerver a `http://localhost:3000` címen indul.
### Docker konténerként
```bash
docker build --build-arg VERSION=$(cat VERSION) -t badgedex:$(cat VERSION) .
docker run -dit --name badgedex -p 3000:3000 badgedex:$(cat VERSION)
```
---
## Fejlesztés
### Tesztek futtatása
```bash
npm test
```
Jest + Supertest tesztekkel, axios mockkal. A lefedettségi riport automatikusan generálódik.