feat(ui): Serverseitig gerenderte Oberflaeche ohne Build-Schritt

Eigenes CSS statt Framework, Vanilla-JavaScript, heller und dunkler
Modus. Ohne JavaScript bleibt alles bedienbar; das Liniendiagramm
faellt auf eine selbst gezeichnete Balkendarstellung zurueck, wenn das
CDN nicht erreichbar ist.

Chart.js ist auf eine Version festgelegt und per Subresource Integrity
an seinen Hash gebunden.

Die Domain-Seite enthaelt eine Schritt-fuer-Schritt-Anleitung fuer DNS,
Hosting-Panel und Zertifikat samt Fehlersuche.
This commit is contained in:
2026-08-03 18:11:40 +02:00
parent 7238e7a937
commit fabaef1f2b
19 changed files with 2378 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
# =============================================================
# urlshort-qr-gen – Apache-Konfiguration fuer den Webroot
# =============================================================
<IfModule mod_rewrite.c>
RewriteEngine On
# Falls die Anwendung in einem Unterverzeichnis liegt, ermittelt
# Apache die Basis in der Regel selbst. Bei Problemen hier setzen:
# RewriteBase /
# Vorhandene Dateien und Verzeichnisse direkt ausliefern
# (assets/, favicon.ico, ...).
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Alles Uebrige an den Front Controller.
RewriteRule ^ index.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
# Ohne mod_rewrite funktionieren nur Aufrufe mit index.php/... –
# bitte mod_rewrite beim Hoster aktivieren.
ErrorDocument 404 /index.php
</IfModule>
# Authorization-Header durchreichen (manche CGI/FastCGI-Setups)
<IfModule mod_setenvif.c>
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
</IfModule>
# Verzeichnislisting abschalten
Options -Indexes
# Standard-Zeichensatz
AddDefaultCharset UTF-8
# Sicherheits-Header fuer statische Dateien.
# "setifempty" statt "set", weil die Anwendung dieselben Header fuer
# PHP-Antworten selbst setzt - sonst wuerden sie doppelt ausgeliefert.
<IfModule mod_headers.c>
Header setifempty X-Content-Type-Options "nosniff"
Header setifempty X-Frame-Options "DENY"
Header setifempty Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
# Statische Assets duerfen gecacht werden
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 7 days"
ExpiresByType application/javascript "access plus 7 days"
ExpiresByType image/svg+xml "access plus 7 days"
</IfModule>
# Kein Zugriff auf Konfigurations- und Versionsdateien
<FilesMatch "^(\.env.*|composer\.(json|lock)|.*\.md|.*\.ya?ml|Dockerfile)$">
Require all denied
</FilesMatch>