Web-Oberfläche zur Erstellung von Übersichtsplänen für die Kurswahl in der Oberstufe.
Wir freuen uns über jeden, der sich an der Entwicklung von Schiller-Online beteiligen möchte!
Wer Fehler im Programm findet, kann diese unter Issues beschreiben. Fehlersuche und das Reproduzieren von Fehlern ist sehr zeitaufwändig und jeder Hinweis ist sehr hilfreich, an dieser Stelle schon einmal einen herzlichen Dank!
Wer am Programmcode arbeiten möchte, folgt diesen Schritten:
- Eine eigenen Kopie (Fork) des Repositories auf github erstellen
- Diesen Fork mit
git clone
lokal herunterladen und einrichten (s.u.: "Sofort loslegen") - Mit
git switch -c new-feature-branch
einen eigenen Branch erstellen, in dem man Änderung vornimmt - Diese Änderungen mit einem Pull Request von
new-feature-branch -> main
vorschlagen
Dieses Vorgehen ist als Github Flow bekannt. Sollten Probleme auftauchen, lege gerne eine neue Issue an, wir werden versuchen dich zu unterstützen!
git clone https://github.com/Oberschule-an-der-Egge/schiller-online.git
cd schiller-online
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
- Redis lokal installieren und mit
redis-server
ausführen. Es sollte keine weitere Konfiguration nötig sein. - Die Umgebungsvariable
FLASK_ENV=development
setzen, z.B. hier für PyCharm - Die aktuellen Sessiondaten können unter
/redis
eingesehen werden.
Schiller-Online läuft mit Python, HTML, CSS und ein bisschen Javascript zur Darstellung der Formulare. Die Applikation wird über das Webframework Flask gesteuert. Daten, die während der Ausführung erzeugt werden, werden in Redis gespeichert. Die automatischen Tests werden mit Pytest ausgeführt.
Unter docs/redis.md findet sich eine genaue Beschreibung, wie Schiller-Online Redis einsetzt, wer sich für Pytest interessiert findet Details unter docs/testing.md.
Wenn man die Zeit aufwendet, um Code für eine Open-Source Applikation zu schreiben, möchte man sichergehen, dass dieser nicht missbraucht und entgegen der eigenen Vorstellung verwendet wird.
Die App ist deswegen unter der Open-Source-Linzenz für die Europäische Union lizensiert. Dies soll sicherstellen, dass alle Helfer die Rechte an ihrer Arbeit behalten, dass diese Arbeit aber nicht in proprietärer Software landet und dass sie persönlich nicht haftbar gemacht werden können.
Noch wichtiger jedoch ist der Gedanke, dass jeder, der diese Software verwenden möchte, seinen Quellcode öffentlich machen und unter eine Copyleft Lizenz stellen muss. Dies stellt im Idealfall sicher, dass Verbesserungen an der Software allen zugutekommen und jeder die Möglichkeit bekommt, die Software zu verändern.
- Testing: Mock Flask + Session Cookies, Mock Redis
- Test Coverage erhöhen
- Ausgabe als Excel-Spreadsheet (vorher nur HTML->PDF)
- Mailing
-
.env
für Konfiguration verwenden - Flask WTF für Formulare
- Possible Future-Refactor: Ein Raster-Objekt das nach Redis de/serialisiert wird; übersichtlicher (try msgpack)
docs/
- Dokumentation und Bilderoutput/
- Test-Output (z.B. pdf, xlsx) während der Entwicklungsrc/
- Programmcodeconfig/
- Konfiguration je nachFLASK_ENV
Umgebungsvariablemodels/
- Struktur der App-Datenservices/
- Code für z.B. Interaktion mit der Datenbank, Mailing, ...static/
- Statische Dateien, z.B.css
js
png
templates/
- Jinja2 Templates zur Darstellung derhtml
-Seitenviews/
- Applikationslogik,routes.py
steuert die einzelnen Abfragen inprocess/
main.py
- 2. Entry Point, Flask-Applikation
tests/
- Automatisierte Tests, werden mitpytest
ausgeführtfunctional/
- Tests der gesamten Applikationunit/
- Tests für einzelne Funktionenconftest.py
- Konfigurationsdatei fürpytest
.github/
- Konfiguration für github Actions (automatische Tests/CI)wsgi.py
- 1. Entry Point, Applikations-Server
Entstanden am 12.03.2020 an der Oberschule an der Egge, ursprünglich als CLI-Applikation. Namenspate war die Schulleitungslegende Ingo Schiller, selbst kein Technikfreund - aber präzise, wenn es ums Detail ging. Diese Genauigkeit und die Freude am Gerät sind seit Beginn unser Antrieb:
Konzept & CLI Code @dertopher
Web Code @cmacht