Die Website sag-es-besser.de ist sehr sorgfältig konzipiert und bemüht sich um einen differenzierten, nicht-belehrenden Ton („keine Verbotsliste“, „Selbstbezeichnung schlägt Wörterliste“).
  • HTML 94.6%
  • Python 2.6%
  • CSS 2.3%
  • JavaScript 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-19 12:17:13 +02:00
assets acessibility stuff fixed (sort of) 2026-09-08 13:16:52 +02:00
data Fedi Fixes pt .1 2026-09-11 13:02:19 +02:00
grundlagen Improve accessibility and standardize html output 2026-09-19 12:17:13 +02:00
html Improve accessibility and standardize html output 2026-09-19 12:17:13 +02:00
wort Improve accessibility and standardize html output 2026-09-19 12:17:13 +02:00
.env.example add ftp deployment 2026-09-09 14:59:34 +02:00
.gitignore Initial project import 2026-09-08 12:35:08 +02:00
.htaccess add git infos & .htaccess 2026-09-08 12:52:24 +02:00
app.js Improve accessibility and standardize html output 2026-09-19 12:17:13 +02:00
build.py Improve accessibility and standardize html output 2026-09-19 12:17:13 +02:00
CHANGELOG.md Improve accessibility and standardize html output 2026-09-19 12:17:13 +02:00
docker-compose.yml Improve accessibility and standardize html output 2026-09-19 12:17:13 +02:00
index.html Improve accessibility and standardize html output 2026-09-19 12:17:13 +02:00
LICENSE Initial project import 2026-09-08 12:35:08 +02:00
nginx.conf Initial project import 2026-09-08 12:35:08 +02:00
README.md Improve accessibility and standardize html output 2026-09-19 12:17:13 +02:00
robots.txt add robots.txt 2026-09-09 14:32:47 +02:00
sitemap.xml change badges size 2026-09-10 13:29:53 +02:00
styles.css Improve accessibility and standardize html output 2026-09-19 12:17:13 +02:00

Sag' es besser...

Eine komplett statische, trackerfreie Website mit 93 direkt verlinkbaren Einträgen zu ableistischer, sanistischer/saneistischer, misogyner, sexistischer, klassistischer und historisch belasteter Sprache.

Schnell starten

Den Inhalt des Ordners html/ auf einen normalen Webserver kopieren. Es gibt keine Datenbank, keinen Build-Zwang und keine externen Abhängigkeiten.

Für einen lokalen Test:

python3 -m http.server 8080 --directory html

Dann http://localhost:8080/ öffnen.

Alternativ ist eine kleine Nginx-Docker-Variante enthalten:

docker compose up -d

Sie stellt die Seite ebenfalls auf Port 8080 bereit.

Für Social Media und Suchmaschinen

Jeder Eintrag liegt als echte statische Seite unter html/wort/<slug>/index.html. Dadurch haben geteilte Begriffe eigene Titel und Beschreibungen, statt nur einen #hash auf der Startseite zu benutzen.

Die Seite html/grundlagen/ erklärt die Kategorien, Status-Badges und die Grenzen des Wörterbuchs. Sie wird beim Build automatisch mit erzeugt.

Wenn die endgültige Domain bekannt ist, einmal neu bauen:

./build.py --site-url https://deine-domain.example

Damit werden absolute Canonical-/Share-URLs sowie eine html/sitemap.xml erzeugt.

Inhalte bearbeiten

  • data/words.json enthält alle Wörter, Alternativen, Erklärungen und Quellenzuordnungen.
  • data/sources.json enthält die Quellen.
  • Danach ./build.py ausführen.

Hinweis zu Git-Diffs

build.py erzeugt aus den Quelldateien ausschließlich unter html/ die Startseite, die Grundlagen-Seite und alle einzelnen Wortseiten neu. Die erzeugten HTML-Dateien werden als statischer Veröffentlichungsstand im Repository mitgeführt. Deshalb kann eine kleine Änderung in data/words.json, data/sources.json oder build.py in Git einen verhältnismäßig großen Diff auslösen: Die Änderung wird an mehreren generierten Seiten übernommen. Das ist erwartetes Verhalten und nicht automatisch ein Hinweis auf viele unabhängige inhaltliche Änderungen.

Mit „Quelldateien“ sind hier insbesondere gemeint:

  • data/words.json für die Einträge, Alternativen, Erklärungen und Beispiele,
  • data/sources.json für die zentral verwalteten Quellen,
  • build.py für die HTML-Struktur und die Seitentemplates,
  • styles.css für das Design und app.js für interaktive Funktionen.

Auch Dateien in assets/ gehören zum direkten Quellbestand, wenn Grafiken oder Icons geändert werden. Bearbeitet werden sollten grundsätzlich diese Dateien, nicht die daraus erzeugten index.html-Dateien unter html/wort/, html/grundlagen/ oder html/index.html. Anschließend werden die generierten Dateien mit ./build.py aktualisiert.

Entwicklung

Das Projekt liegt als Git-Repository auf Forgejo: https://devnoc.de/nocci/sag-es-besser

Für lokale Änderungen genügt ein einfacher Entwicklungsserver:

python3 -m http.server 8080 --directory html

Wenn Inhalte in data/ geändert wurden, aktualisiert ./build.py die Startseite und die einzelnen Seiten unter html/. Die erzeugten Dateien gehören zum statischen Veröffentlichungsstand und werden deshalb mitgeführt.

Für die laufende Entwicklung kann der Build automatisch mitlaufen:

./build.py --watch

Mit veröffentlichungsfertigem Output und Canonical-/Share-URLs:

./build.py --site-url https://deine-domain.example --watch

Direkter FTP-/FTPS-Upload

Für einen direkten Upload nach dem Build die FTP-Zugangsdaten lokal in .env eintragen. Die Datei ist in .gitignore ausgeschlossen; als Vorlage dient .env.example.

./build.py --site-url https://sag-es-besser.de --deploy

--deploy baut standardmäßig nach html/ und lädt anschließend alle erzeugten Dateien per FTPS auf FTP_REMOTE_DIR hoch. Ein anderes Ausgabeverzeichnis kann mit --output-dir angegeben werden. Der Upload legt fehlende Unterverzeichnisse an, löscht aber keine alten Dateien auf dem Server.

Der Watch-Modus benötigt keine zusätzlichen Pakete und endet mit Ctrl-C.

Datenschutz

Keine Cookies, keine Analytics, keine externen Fonts, kein CDN, keine externen JavaScript-Bibliotheken. Externe Verbindungen entstehen nur, wenn Besucher*innen bewusst einen Quellenlink öffnen.

Design

Absichtlich kein generischer Web-App-Look: kein Gradient, keine runden Dashboard-Karten, keine Stock-Illustrationen. Die Gestaltung orientiert sich eher an Wörterbuch, Flugblatt und kleinem Magazin. Semantisches HTML, Tastatursteuerung, prefers-reduced-motion und druckbares Layout sind eingebaut.