Skip to content

Commit e10a05b

Browse files
committed
initial release
0 parents  commit e10a05b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+12113
-0
lines changed

.github/workflows/release.yml

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*"
7+
branches:
8+
- main
9+
workflow_dispatch:
10+
11+
permissions:
12+
contents: write
13+
14+
jobs:
15+
version-check:
16+
name: Version check
17+
runs-on: ubuntu-latest
18+
outputs:
19+
version: ${{ steps.check.outputs.version }}
20+
tag: ${{ steps.check.outputs.tag }}
21+
should_build: ${{ steps.check.outputs.should_build }}
22+
should_release: ${{ steps.check.outputs.should_release }}
23+
steps:
24+
- name: Checkout
25+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
26+
with:
27+
fetch-depth: 0
28+
29+
- name: Setup Node
30+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
31+
with:
32+
node-version: 20
33+
34+
- name: Check version
35+
id: check
36+
run: |
37+
set -euo pipefail
38+
SHOULD_BUILD="true"
39+
SHOULD_RELEASE="true"
40+
41+
if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then
42+
TAG_NAME="${GITHUB_REF_NAME}"
43+
VERSION="${GITHUB_REF_NAME#v}"
44+
else
45+
VERSION="$(node -p "require('./package.json').version")"
46+
TAG_NAME="v${VERSION}"
47+
fi
48+
49+
if [[ "${GITHUB_EVENT_NAME}" == "push" && "${GITHUB_REF_TYPE}" != "tag" ]]; then
50+
BEFORE_SHA="$(node -p "require(process.env.GITHUB_EVENT_PATH).before")"
51+
if [[ -n "${BEFORE_SHA}" && "${BEFORE_SHA}" != "0000000000000000000000000000000000000000" ]]; then
52+
if git show "${BEFORE_SHA}:package.json" >/dev/null 2>&1; then
53+
PREV_VERSION="$(git show "${BEFORE_SHA}:package.json" | node -e "const fs=require('fs'); const pkg=JSON.parse(fs.readFileSync(0,'utf8')); console.log(pkg.version||'');")"
54+
if [[ "${PREV_VERSION}" == "${VERSION}" ]]; then
55+
SHOULD_BUILD="false"
56+
SHOULD_RELEASE="false"
57+
fi
58+
fi
59+
fi
60+
fi
61+
62+
if [[ "${GITHUB_REF_TYPE}" != "tag" ]]; then
63+
if git show-ref --tags --quiet "refs/tags/${TAG_NAME}"; then
64+
SHOULD_RELEASE="false"
65+
fi
66+
fi
67+
68+
if [[ "${SHOULD_BUILD}" != "true" ]]; then
69+
SHOULD_RELEASE="false"
70+
fi
71+
72+
{
73+
echo "version=${VERSION}"
74+
echo "tag=${TAG_NAME}"
75+
echo "should_build=${SHOULD_BUILD}"
76+
echo "should_release=${SHOULD_RELEASE}"
77+
} >> "$GITHUB_OUTPUT"
78+
79+
build:
80+
name: Build (${{ matrix.os }})
81+
needs: version-check
82+
if: needs.version-check.outputs.should_build == 'true'
83+
runs-on: ${{ matrix.os }}
84+
strategy:
85+
fail-fast: false
86+
matrix:
87+
include:
88+
- os: macos-latest
89+
artifact_name: release-macos
90+
artifact_path: release/*.dmg
91+
- os: windows-latest
92+
artifact_name: release-windows
93+
artifact_path: release/*.exe
94+
- os: ubuntu-latest
95+
artifact_name: release-linux
96+
artifact_path: release/*.AppImage
97+
env:
98+
CSC_IDENTITY_AUTO_DISCOVERY: "false"
99+
steps:
100+
- name: Checkout
101+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
102+
103+
- name: Setup Node
104+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
105+
with:
106+
node-version: 20
107+
cache: npm
108+
109+
- name: Install dependencies
110+
run: npm ci
111+
112+
- name: Build release
113+
run: npm run dist
114+
115+
- name: Upload artifacts
116+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
117+
with:
118+
name: ${{ matrix.artifact_name }}
119+
path: ${{ matrix.artifact_path }}
120+
if-no-files-found: error
121+
122+
release:
123+
name: Create Release
124+
runs-on: ubuntu-latest
125+
needs: [version-check, build]
126+
if: needs.version-check.outputs.should_release == 'true'
127+
steps:
128+
- name: Download artifacts
129+
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
130+
with:
131+
path: release-artifacts
132+
133+
- name: Publish release
134+
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
135+
with:
136+
tag_name: ${{ needs.version-check.outputs.tag }}
137+
name: API Key Health Checker ${{ needs.version-check.outputs.version }}
138+
draft: false
139+
prerelease: false
140+
generate_release_notes: true
141+
files: |
142+
release-artifacts/**/*.dmg
143+
release-artifacts/**/*.exe
144+
release-artifacts/**/*.AppImage
145+
env:
146+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# dependencies
2+
node_modules/
3+
4+
# build outputs
5+
dist/
6+
7+
# electron-builder
8+
dist-builder/
9+
release/
10+
11+
# logs
12+
npm-debug.log*
13+
yarn-debug.log*
14+
yarn-error.log*
15+
pnpm-debug.log*
16+
17+
# OS files
18+
.DS_Store
19+
Thumbs.db
20+
21+
# Editor directories and files
22+
.vscode/
23+
.idea/
24+
*.swp
25+
*.swo
26+
27+
# env
28+
.env
29+
.env.*
30+
31+
# coverage
32+
coverage/
33+
34+
# misc
35+
*.log
36+
37+
38+
# temp files
39+
Temp/

LICENSE

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
BSD 3-Clause License
2+
3+
Copyright (c) API Key Health Checker contributors
4+
All rights reserved.
5+
6+
Redistribution and use in source and binary forms, with or without
7+
modification, are permitted provided that the following conditions are met:
8+
9+
1. Redistributions of source code must retain the above copyright notice, this
10+
list of conditions and the following disclaimer.
11+
12+
2. Redistributions in binary form must reproduce the above copyright notice,
13+
this list of conditions and the following disclaimer in the documentation
14+
and/or other materials provided with the distribution.
15+
16+
3. Neither the name of the copyright holder nor the names of its
17+
contributors may be used to endorse or promote products derived from
18+
this software without specific prior written permission.
19+
20+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

README.es.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<p align="center">
2+
<img src="assets/logo.png" width="220" alt="Logo de API Key Health Checker" />
3+
</p>
4+
5+
# API Key Health Checker
6+
7+
GitHub: https://github.com/nbox/API-Key-Health-Checker
8+
9+
🌐 Leer en: [English](README.md) | [Русский](README.ru.md) | [Español](README.es.md)
10+
11+
Aplicación de escritorio para validar claves API de servicios populares y ejecutar comprobaciones por lotes con límites de tasa y reportes. Compatible con OpenAI (ChatGPT), Google Gemini, YouTube Data API y endpoints personalizados.
12+
13+
## Descargar
14+
Lanzamientos: https://github.com/nbox/API-Key-Health-Checker/releases
15+
16+
## Funciones
17+
- Adaptadores de servicio: OpenAI, Gemini, YouTube, Custom
18+
- Comprobaciones por lotes con concurrencia, retraso aleatorio (jitter), reintentos y limitador global de RPS
19+
- Varias ejecuciones en paralelo con registros en tiempo real, estadísticas y resumen
20+
- Importación de claves desde TXT/CSV/JSON, selección de codificación, deduplicación, advertencias de formato
21+
- Exportar informes a CSV/JSON (enmascarado o completo)
22+
- Idiomas de la UI: Inglés (por defecto), Ruso, Español
23+
24+
## Seguridad y privacidad
25+
- Las claves se envían solo al endpoint API seleccionado
26+
- Sin telemetría
27+
- Usa solo claves que te pertenezcan o tengas permiso para probar
28+
- La exportación completa guarda las claves en texto plano (sin cifrado). Úsalo con cuidado.
29+
30+
## Requisitos
31+
- Node.js 20+
32+
- npm
33+
34+
## Inicio rápido
35+
```bash
36+
npm install
37+
npm run dev
38+
```
39+
40+
## Captura de pantalla
41+
42+
![Espacio para la captura](assets/screenshot.png)
43+
44+
## Compilación
45+
```bash
46+
git clone https://github.com/nbox/API-Key-Health-Checker.git
47+
cd API-Key-Health-Checker
48+
npm install
49+
npm run build
50+
npm run dist
51+
```
52+
La salida de compilación se guarda en `dist/`.
53+
DMG: `release/API Key Health Checker-1.0.0-{arch}.dmg`.
54+
macOS: ejecuta `npm run dist` en macOS para generar un `.dmg` en `release/`.
55+
Windows: ejecuta `npm run dist` en Windows para generar un instalador `.exe` en `release/`.
56+
57+
## GitHub Actions release
58+
- En push a `main` o tags `v*`
59+
- Compila para macOS, Windows y Linux
60+
- Crea un GitHub Release con artefactos
61+
62+
## Servicio personalizado
63+
Usa el adaptador Custom para definir base URL, path, tipo de autenticación (bearer/header/query) y códigos de éxito.
64+
65+
## Estructura del proyecto
66+
- `src/main`: proceso principal de Electron y motor de comprobaciones
67+
- `src/renderer`: UI (React + Tailwind)
68+
- `src/shared`: tipos y utilidades compartidas

README.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<p align="center">
2+
<img src="assets/logo.png" width="220" alt="API Key Health Checker logo" />
3+
</p>
4+
5+
# API Key Health Checker
6+
7+
🌐 Read in: [English](README.md) | [Русский](README.ru.md) | [Español](README.es.md)
8+
9+
Desktop app to validate API keys for popular services and run batch checks with rate limits and reports. Supports OpenAI (ChatGPT), Google Gemini, YouTube Data API, and custom endpoints.
10+
11+
![Screenshot placeholder](assets/screenshot.png)
12+
13+
## Download
14+
15+
Releases: https://github.com/nbox/API-Key-Health-Checker/releases
16+
17+
## Features
18+
19+
- Service adapters: OpenAI, Gemini, YouTube, Custom
20+
- Batch checks with concurrency, random delay (jitter), retries, global RPS limiter
21+
- Multiple parallel runs with live logs, stats, and summary
22+
- Import keys from TXT/CSV/JSON, encoding selection, dedupe, format warnings
23+
- Export reports to CSV/JSON (masked or full)
24+
- UI languages: English (default), Russian, Spanish
25+
26+
## Security and privacy
27+
28+
- Keys are sent only to the selected API endpoint
29+
- No telemetry
30+
- Use only keys you own or have permission to test
31+
- Full export saves plain text keys (no encryption). Handle with care.
32+
33+
## Requirements
34+
35+
- Node.js 20+
36+
- npm
37+
38+
## Quick start
39+
40+
```bash
41+
npm install
42+
npm run dev
43+
```
44+
45+
## Build
46+
47+
```bash
48+
git clone https://github.com/nbox/API-Key-Health-Checker.git
49+
cd API-Key-Health-Checker
50+
npm install
51+
npm run build
52+
npm run dist
53+
```
54+
55+
Build output is written to `dist/`.
56+
DMG output: `release/API Key Health Checker-1.0.0-{arch}.dmg`.
57+
macOS build: run `npm run dist` on macOS to generate a `.dmg` in `release/`.
58+
Windows build: run `npm run dist` on Windows to generate a `.exe` installer in `release/`.
59+
60+
## GitHub Actions release
61+
62+
- On push to `main` or tags `v*`
63+
- Builds for macOS, Windows, and Linux
64+
- Creates a GitHub Release with artifacts
65+
66+
## Custom service
67+
68+
Use the Custom adapter to define a base URL, path, auth type (bearer/header/query), and success status codes.
69+
70+
## Project structure
71+
72+
- `src/main`: Electron main process and execution engine
73+
- `src/renderer`: UI (React + Tailwind)
74+
- `src/shared`: shared types and utilities

0 commit comments

Comments
 (0)