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
Status: Desktop App
Plattform: Windows
Stack: Electron, React, Vite, TypeScript
Build: Gitea Actions Runner
1. .env Datei laden oder Text einfuegen
2. Automatische Standardwerte pruefen oder eigene Defaults ergaenzen
3. CHANGE_ME Platzhalter generieren lassen
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
┌─────────────────────────────────────────────────────────────┐
│ EnvHelper Datei laden .env speichern Theme Settings │
├─────────────────────────────┬───────────────────────────────┤
│ Input │ Output │
│ DATABASE_URL=...CHANGE_ME │ DATABASE_URL=...generated... │
├─────────────────────────────┴───────────────────────────────┤
│ Standardwerte Erkannte Anforderungen │
└─────────────────────────────────────────────────────────────┘
Input Verarbeitung Output
----- ------------ ------
DATABASE_URL=... Placeholder erkennen DATABASE_URL=...
POSTGRES_PASSWORD=... -> Format ableiten -> POSTGRES_PASSWORD=...
SESSION_SECRET=... Werte lokal erzeugen SESSION_SECRET=...
```
---
## Beispiel
Eingabe:
```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
SESSION_SECRET=CHANGE_ME_AT_LEAST_32_RANDOM_CHARACTERS
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
DATABASE_URL=postgresql://hilden_app:generated-postgres-password@postgres:5432/hilden_directory
POSTGRES_PASSWORD=generated-postgres-password
SESSION_SECRET=generated-url-safe-secret
ENCRYPTION_KEY_BASE64=generated-base64-key
APP_PORT=3000
NODE_ENV=production
PUBLIC_BASE_URL=https://example.local
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_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 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
BOOTSTRAP_ADMIN_EMAIL = admin@example.local
```
Manuelle Defaults koennen jederzeit hinzugefuegt werden. Sie ueberschreiben automatisch erkannte Defaults und wirken nur auf den Output, nicht auf die Eingabevorlage.
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
Der Windows-Build erzeugt zwei Dateien:
Der Windows-Build erzeugt zwei nutzbare Dateien:
- `EnvHelper-0.1.0-setup-x64.exe`
- `EnvHelper-0.1.0-portable-x64.exe`
```text
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
@@ -104,30 +169,64 @@ npm install
npm run dev
```
In einem zweiten Terminal kann der Electron-Build geprüft werden:
Build pruefen:
```bash
npm run build
```
## Windows Build
Der Windows-Build läuft über Gitea Actions und nutzt den Linux Runner mit Wine:
Windows-Paket lokal bauen:
```bash
npm run dist:win
```
Workflow:
---
## Windows Build
Der produktive Windows-Build laeuft ueber Gitea Actions:
```text
.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
- Autor: `MrSphay`
- Repository: `MrSphay/envHelper`
- App-ID: `de.wilkensxl.envhelper`
| Feld | Wert |
| --- | --- |
| Autor | `MrSphay` |
| Repository | `MrSphay/envHelper` |
| App-ID | `de.wilkensxl.envhelper` |
| Stack | Electron, React, Vite, TypeScript |
| README-Stil | Inspiriert von `andreasbm/readme` |