Refresh README presentation
Some checks failed
Build Windows App / build-windows (push) Has been cancelled

This commit is contained in:
MrSphay
2026-05-01 23:58:44 +02:00
parent 1be74d1ad3
commit 98781f8e85

245
README.md
View File

@@ -1,101 +1,166 @@
# EnvHelper <p align="center">
<h1 align="center">EnvHelper</h1>
<p align="center">
Lokale Windows-App zum sauberen Ausfuellen von <code>.env</code>-Vorlagen.
</p>
</p>
**EnvHelper** ist eine lokale Windows-Desktop-App zum Ausfüllen von `.env` Vorlagen. Sie erkennt `CHANGE_ME` Platzhalter, erzeugt passende Werte im erwarteten Format und gibt eine fertige `.env` aus. <p align="center">
<img alt="Platform" src="https://img.shields.io/badge/platform-Windows-2563eb">
<img alt="Stack" src="https://img.shields.io/badge/stack-Electron%20%2B%20React%20%2B%20TypeScript-0f766e">
<img alt="Build" src="https://img.shields.io/badge/build-Gitea%20Runner-a855f7">
<img alt="Version" src="https://img.shields.io/badge/version-0.1.0-111827">
</p>
---
## Inhalt
- [Kurzbeschreibung](#kurzbeschreibung)
- [Features](#features)
- [Workflow](#workflow)
- [Beispiel](#beispiel)
- [Erkennung](#erkennung)
- [Standardwerte](#standardwerte)
- [Download und Artefakte](#download-und-artefakte)
- [Entwicklung](#entwicklung)
- [Windows Build](#windows-build)
- [Sicherheit](#sicherheit)
- [Projektinfos](#projektinfos)
---
## Kurzbeschreibung
EnvHelper liest `.env`-Dateien oder reinen Text ein, erkennt `CHANGE_ME`-Platzhalter und erzeugt passende Werte im erwarteten Format. Gleiche Platzhalter erhalten denselben Wert, damit zusammenhaengende Variablen wie `DATABASE_URL` und `POSTGRES_PASSWORD` synchron bleiben.
Die App arbeitet lokal als Desktop-Tool. Es werden keine Secrets an externe Dienste gesendet.
---
## Features
| Bereich | Beschreibung |
| --- | --- |
| Datei und Text | `.env` laden, Text direkt einfuegen, Ergebnis kopieren oder speichern |
| Placeholder | Erkennt `CHANGE_ME...` Werte und ersetzt sie formatbewusst |
| Konsistenz | Gleiche Placeholder werden im gesamten Output identisch ersetzt |
| Formate | Passwoerter, Secrets, Base64, Hex, UUID, Ports, URLs, E-Mail, API-Key-Praefixe |
| Standardwerte | Erkennt naheliegende Defaults automatisch und erlaubt manuelle Overrides |
| Desktop UI | Kompakte Windows-App mit nativer Fensterleiste, Darkmode und Settings |
| Sprachen | Deutsch, Englisch, Spanisch, Franzoesisch, Niederlaendisch |
| Build | Windows Setup und Portable EXE ueber Gitea Runner |
---
## Workflow
```text ```text
Status: Desktop App 1. .env Datei laden oder Text einfuegen
Plattform: Windows 2. Automatische Standardwerte pruefen oder eigene Defaults ergaenzen
Stack: Electron, React, Vite, TypeScript 3. CHANGE_ME Platzhalter generieren lassen
Build: Gitea Actions Runner 4. Output kopieren oder als neue .env speichern
``` ```
## Highlights
- `.env` Datei laden oder reinen Text einfügen
- `CHANGE_ME...` Platzhalter automatisch erkennen
- Passwörter, Secrets, Base64-Keys, UUIDs, Ports, URLs und E-Mails heuristisch erzeugen
- Gleiche Placeholder konsistent mit demselben Wert ersetzen
- Standardwerte pro Key definieren und im Output überschreiben lassen
- Hell/Dunkel/System Theme
- Einstellungen mit Sprache, Version und Projektinfos
- Ausgabe kopieren oder als neue `.env` speichern
## Vorschau
Screenshots können später im Repository ergänzt werden.
```text ```text
┌─────────────────────────────────────────────────────────────┐ Input Verarbeitung Output
│ EnvHelper Datei laden .env speichern Theme Settings │ ----- ------------ ------
├─────────────────────────────┬───────────────────────────────┤ DATABASE_URL=... Placeholder erkennen DATABASE_URL=...
│ Input │ Output │ POSTGRES_PASSWORD=... -> Format ableiten -> POSTGRES_PASSWORD=...
│ DATABASE_URL=...CHANGE_ME │ DATABASE_URL=...generated... │ SESSION_SECRET=... Werte lokal erzeugen SESSION_SECRET=...
├─────────────────────────────┴───────────────────────────────┤
│ Standardwerte Erkannte Anforderungen │
└─────────────────────────────────────────────────────────────┘
``` ```
---
## Beispiel ## Beispiel
Eingabe: Eingabe:
```env ```env
DATABASE_URL=postgresql://hilden_app:CHANGE_ME_POSTGRES_PASSWORD@postgres:5432/hilden_directory APP_PORT=3000
NODE_ENV=production
PUBLIC_BASE_URL=CHANGE_ME_PUBLIC_URL
DATABASE_URL=postgresql://app_user:CHANGE_ME_POSTGRES_PASSWORD@postgres:5432/app_db
POSTGRES_PASSWORD=CHANGE_ME_POSTGRES_PASSWORD POSTGRES_PASSWORD=CHANGE_ME_POSTGRES_PASSWORD
SESSION_SECRET=CHANGE_ME_AT_LEAST_32_RANDOM_CHARACTERS SESSION_SECRET=CHANGE_ME_AT_LEAST_32_RANDOM_CHARACTERS
ENCRYPTION_KEY_BASE64=CHANGE_ME_32_RANDOM_BYTES_AS_BASE64 ENCRYPTION_KEY_BASE64=CHANGE_ME_32_RANDOM_BYTES_AS_BASE64
BOOTSTRAP_ADMIN_EMAIL=admin@example.local BOOTSTRAP_ADMIN_EMAIL=CHANGE_ME_EMAIL
BOOTSTRAP_ADMIN_PASSWORD=CHANGE_ME_LONG_INITIAL_ADMIN_PASSWORD
``` ```
Ausgabe: Moeglicher Output:
```env ```env
DATABASE_URL=postgresql://hilden_app:generated-postgres-password@postgres:5432/hilden_directory APP_PORT=3000
POSTGRES_PASSWORD=generated-postgres-password NODE_ENV=production
SESSION_SECRET=generated-url-safe-secret PUBLIC_BASE_URL=https://example.local
ENCRYPTION_KEY_BASE64=generated-base64-key
DATABASE_URL=postgresql://app_user:K2d8rF7s...@postgres:5432/app_db
POSTGRES_PASSWORD=K2d8rF7s...
SESSION_SECRET=n9pS...urlSafeSecret
ENCRYPTION_KEY_BASE64=4G8t...base64Value
BOOTSTRAP_ADMIN_EMAIL=admin@example.local BOOTSTRAP_ADMIN_EMAIL=admin@example.local
BOOTSTRAP_ADMIN_PASSWORD=Wz4...strongPassword
``` ```
Die tatsächlichen Werte werden zufällig lokal erzeugt. Die echten Werte werden zufaellig lokal erzeugt.
---
## Erkennung
EnvHelper priorisiert den Inhalt des Platzhalters vor dem umgebenden Variablennamen. Dadurch wird zum Beispiel `CHANGE_ME_POSTGRES_PASSWORD` innerhalb einer `DATABASE_URL` als Passwort erkannt und nicht faelschlich als URL.
Unterstuetzte Muster sind unter anderem:
| Muster | Ergebnis |
| --- | --- |
| `CHANGE_ME_POSTGRES_PASSWORD` | starkes URL-sicheres Passwort |
| `CHANGE_ME_32_RANDOM_BYTES_AS_BASE64` | 32 zufaellige Bytes als Base64 |
| `CHANGE_ME_HEX_TOKEN` | zufaellige Bytes als Hex |
| `CHANGE_ME_UUID` | UUID v4 |
| `CHANGE_ME_PUBLIC_URL` | HTTPS URL |
| `CHANGE_ME_EMAIL` | E-Mail-Adresse |
| `STRIPE_SECRET_KEY=CHANGE_ME` | Stripe-artiger `sk_test_...` Wert |
| `STRIPE_WEBHOOK_SECRET=CHANGE_ME` | Stripe-artiger `whsec_...` Wert |
| `AWS_ACCESS_KEY_ID=CHANGE_ME` | AWS/S3-artiges Access-Key-ID Format |
Weitere Heuristiken decken typische `.env.example`-Variablen fuer SMTP, S3/MinIO, Redis, RabbitMQ, CORS, Log-Level, Environment-Flags und API Keys ab.
---
## Standardwerte ## Standardwerte
Standardwerte werden in einer eigenen Sektion gepflegt. Wenn ein Key dort eingetragen ist, überschreibt der Wert den entsprechenden Output-Key. Standardwerte werden in einer eigenen Sektion angezeigt. Die App erkennt naheliegende Defaults automatisch, zum Beispiel:
Beispiel: | Key | Default |
| --- | --- |
| `BOOTSTRAP_ADMIN_EMAIL` | `admin@example.local` |
| `NODE_ENV` | `production` |
| `LOG_LEVEL` | `info` |
| `SMTP_PORT` | `587` |
| `S3_REGION` | `eu-central-1` |
| `REDIS_URL` | `redis://redis:6379/0` |
```text Manuelle Defaults koennen jederzeit hinzugefuegt werden. Sie ueberschreiben automatisch erkannte Defaults und wirken nur auf den Output, nicht auf die Eingabevorlage.
BOOTSTRAP_ADMIN_EMAIL = admin@example.local
```
Dann wird im Output immer dieser Wert gesetzt, auch wenn die Vorlage bereits eine andere E-Mail enthält. ---
## Sicherheit
EnvHelper arbeitet lokal. Die Werte werden im Renderer mit Web-Crypto erzeugt und nicht an externe Dienste gesendet. Die App ist ein Helfer für Vorlagen, ersetzt aber keine zentrale Secret-Verwaltung für produktive Infrastruktur.
### Windows Defender und SmartScreen
Windows kann unsignierte `.exe` Dateien als unbekannten Herausgeber einstufen. Das ist kein EnvHelper-spezifischer Fehler, sondern die normale Windows-Sicherheitsprüfung für Apps ohne vertrauenswürdige Authenticode-Signatur.
Für signierte Builds kann der Gitea Runner später diese Secrets verwenden:
```text
WINDOWS_CSC_LINK
WINDOWS_CSC_KEY_PASSWORD
```
`WINDOWS_CSC_LINK` ist das Code-Signing-Zertifikat, zum Beispiel als Base64-kodierte `.pfx` Datei oder als erreichbare Zertifikats-URL. `WINDOWS_CSC_KEY_PASSWORD` ist das Passwort des Zertifikats. Ohne ein gültiges Code-Signing-Zertifikat bleibt der Herausgeber für Windows unbekannt.
## Download und Artefakte ## Download und Artefakte
Der Windows-Build erzeugt zwei Dateien: Der Windows-Build erzeugt zwei nutzbare Dateien:
- `EnvHelper-0.1.0-setup-x64.exe` ```text
- `EnvHelper-0.1.0-portable-x64.exe` EnvHelper-0.1.0-setup-x64.exe
EnvHelper-0.1.0-portable-x64.exe
```
Die Dateien werden vom Gitea Runner als Actions-Artefakt und als Generic Package veröffentlicht. Die Dateien werden vom Gitea Runner als Actions-Artefakt und als Generic Package veroeffentlicht.
---
## Entwicklung ## Entwicklung
@@ -104,30 +169,64 @@ npm install
npm run dev npm run dev
``` ```
In einem zweiten Terminal kann der Electron-Build geprüft werden: Build pruefen:
```bash ```bash
npm run build npm run build
``` ```
## Windows Build Windows-Paket lokal bauen:
Der Windows-Build läuft über Gitea Actions und nutzt den Linux Runner mit Wine:
```bash ```bash
npm run dist:win npm run dist:win
``` ```
Workflow: ---
## Windows Build
Der produktive Windows-Build laeuft ueber Gitea Actions:
```text ```text
.gitea/workflows/build-windows.yml .gitea/workflows/build-windows.yml
``` ```
Der Runner installiert Node.js, Wine, baut die App mit Electron Builder und lädt die fertigen `.exe` Artefakte hoch. Der Runner:
1. checkt das Repository aus,
2. installiert Node.js,
3. installiert Wine fuer Windows-Packaging auf Linux,
4. baut Vite, TypeScript und Electron,
5. erzeugt Setup und Portable EXE,
6. laedt Artefakte und Packages nach Gitea hoch.
---
## Sicherheit
EnvHelper erzeugt Werte lokal im Renderer mit Web-Crypto. Die App ist ein Helfer fuer `.env`-Vorlagen und ersetzt keine zentrale Secret-Verwaltung fuer produktive Infrastruktur.
### Windows Defender und SmartScreen
Windows kann Apps mit unbekanntem Herausgeber blockieren oder verzoegert starten. Das liegt normalerweise an fehlender Reputation oder fehlendem vertrauenswuerdigem Code-Signing-Zertifikat.
Der Workflow ist fuer Code Signing vorbereitet:
```text
WINDOWS_CSC_LINK
WINDOWS_CSC_KEY_PASSWORD
```
`WINDOWS_CSC_LINK` ist das Zertifikat, zum Beispiel als Base64-kodierte `.pfx` Datei oder als erreichbare Zertifikats-URL. `WINDOWS_CSC_KEY_PASSWORD` ist das Passwort des Zertifikats.
---
## Projektinfos ## Projektinfos
- Autor: `MrSphay` | Feld | Wert |
- Repository: `MrSphay/envHelper` | --- | --- |
- App-ID: `de.wilkensxl.envhelper` | Autor | `MrSphay` |
| Repository | `MrSphay/envHelper` |
| App-ID | `de.wilkensxl.envhelper` |
| Stack | Electron, React, Vite, TypeScript |
| README-Stil | Inspiriert von `andreasbm/readme` |