Dieses Projekt startet mit dem Ziel die öffentlichen Ratsdokumente der Stadt Stuttgart besser für alle Bürgerinnen und Bürger zugänglich zu machen. Dabei versteht sich dieses Projekt selbst als unparteiisch und nur gegenüber demokratischer Meinungsvielfalt verpflichtet.
-
Als Stadtbewohner:in soll ich mit dieser Software die Möglichkeit bekommen, mich zu bestimmten Themen/Stichworten schlau zu machen, um einen besseren Einblick in die politische Arbeit des Stuttgarter Gemeinderats zu bekommen und mich besser für anstehende Wahlen und Bürgerinitiativen vorbereiten zu können.
-
Als Politiker:in soll ich mit dieser Software die Möglichkeit bekommen, mich besser auf meine Arbeit als politische:r Repräsentant:in vorzubereiten um effektivere und nachhaltigere Entscheidungen treffen zu können
Die Ratsdokumente der Stadt Stuttgart sind bereits online abrufbar, allerdings nur mit einer in die Jahre gekommenen Overfläche.
Dieses Projekt ist wesentlich inspiriert durch Politik bei uns und Frag den Staat.
Diese Anwendung besteht aus einem Server- und einem Client-Teil. Der Server-Teil ist eine Node.js Server-Anwendung und ist in TypeScript programmiert. Der Client-Teil ist eine Browser-Anwendung, die ebenfalls in TypeScript entwickelt ist. In diesem Repository liegt der Quellode beider Anwendungs-Bestandteile.
Der Server-Teil der Anwendung benötigt Node.js als Laufzeitumgebung.
Mit dem Befehl npm install
installiert ihr alle notwendigen Code-Bibliotheken, um aus dem Server-Code wie auch den Client-Code eine ausführbare Anwendung zu machen. Diese Bibliotheken sind auch Voraussetzung für die lokale Weiterentwicklung dieser Anwendung.
Der ausführbare Code des Server- und Client-Teil dieser Anwendung kann jeweils separat gebaut werden. Der Befehl npm run server:build
erzeugt den Server-Code und der Befehl npm run client:build
erzeugt den Client-Teil (für den Browser).
Für die lokale Entwicklung eignen sich die Befehle npm run server:build:live
und npm run client:build:watch
, die in bedein Fällen den jeweiligen Code neu bauen, wenn sich etwas im Quellcode-Verzeichns der Anwendung ändert.
Der Befehl npm start
startet den Server-Teil der Anwendung. Vor dem Start werden jeweils der ausführbare Server- und auch der Client-Code neu erzeugt. Die Anwendung ist anschließend über localhost:4000
erreichbar.
Anwendung starten (npm start
) und mit dem Sandbox-Tool unter localhost:4000/playground
die API testen. Der GraphQL Playground unterstützt mit Autovervollständigung und Korrekturfunktion das Testen der API.
Der Quellcode dieses Projekts ist unter der GNU-AGPLv3 lizensiert. Es ist euch darum unter anderem frei diesen Quellcode beliebig zu verändern und weiterzuverteilen. Was ihr rechtlich genau alles machen könnt, lest ihr entweder direkt in der Lizenzdatei oder in der zusammengefassten Form hier nach.
Eure Pull-Requests sind willkommen, aber bitte überprüft vor dem Commit Euren Code indem ihr die Anwendung startet (npm start
) und die Änderungen sinnvoll testet.
Möchte ihr ein neues 'großes' Feature in die Anwendung bringen, beschreibt eure Idee bitte zuerst als Issue, anhand dessen wir die Idee und die Implementierungsdetails besprechen können. Das verhindert, dass keine eurer wertvollen Zeit bei der Weiterentwicklung durch abgelehnte Pull-Requests vergeudet wird.
Die TypeScript Lint-Rules stammen aus dem tollen Open-Source Projekt MichalLytek/type-graphql. Der Befehl npm run lint
überprüft die in diesem Repository konfigurierten Richtlinien.
Anwender:innen von VS Code können den Editor so konfigurieren, dass Lint-Errors automatisch beim Speichern behoben werden.
Dieses Projekt betrifft zu diesem Zeitpunkt ein sehr regionales Anwendungsgebiet. Aus diesem Grund wurde sich dazu entschlossen Commit-Nachrichten und Code-Kommentare in deutscher Sprache zu verfassen, um merkwürdige Übersetzungen deutscher Bürokratiebegriffe zu vermeiden (Bsp. Beratungsunterlage => Discussiondocument?!).
Wenn ihr diese Anwendung im Internet hosten möchtet, überprüft bitte vorher, ob alle Daten, die in dieser Anwendung abgegriffen und weiterverteilt werden, auch wirklich 'offen' und nicht durch Copyrights geschützt sind. Zum jetzigen Zeitpunkt ist dieses Projekt noch experimentell und nicht für ein öffentliches Hosting gedacht.
Ein Dankeschön an dieser Stelle an alle Open-Source Projekte, die als Bibliotheken oder Frameworks Ihren Platz in dieser Anwendung gefunden haben. Ohne diese wertvollen Projekte wäre es nie möglich gewesen, dieses Projekt in solch einer kurzen Zeit auf die Beine zu stellen. Eine genaue Auflistung der verwendeten Projekte findet sich in der package.json unter den beiden Eigenschaften dependencies
und devDependencies
.
Ratsdokumente - Startseite
Ratsdokumente - Suche
Sitzungskalender + Tagesordnungen
Gemeinderat Mitglieder
Gemeinderat politische Zusammensetzung
Gemeinderat Wahldaten Faltblatt
Gemeinderat Wahldaten im Detail
Die Ratsdokumente sind gespickt mit Abkürzungen und Bürokratiebegriffen. GLOSSAR.md ist ein Glossar mit entsprechenden Erklärungen.