Git Product home page Git Product logo

hsma-ctt's Introduction

HSMA-CTT

Open Source CoronaTrackingTool developed by the University of Applied Sciences Mannheim

Tests passing badge AGPL v3

The goal of this project is to develop an open source contact tracking solution for public institutions, especially universities and colleges. Students can check into a room at the beginning of their lecture, using a QR code and their student mail. Non faculty members may be required to provide additional information to allow effective tracking in the case of an infection. The project was created around the principals of transparency and privacy. All gathered data is deleted automatically after the required period. Further information can be be accessed in German: Datenschutz

More information is available in the full Documentation.

Setup

The solution is web-based and can be easily self-hosted, free of charge. For more information see Setup.

Usage

A user guide is provided in German.

Contributing

If you'd like to contribute the project, check out contribution guideline.

hsma-ctt's People

Contributors

alexis0110 avatar androx765 avatar doohu avatar e-reiter avatar emely3h avatar felixxgem avatar gabril-e avatar l4trax avatar maxones25 avatar medkhabt avatar mormundhs-ma avatar oliverhummel avatar vicctic avatar wifi-cable avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

medkhabt sagar0-0

hsma-ctt's Issues

Open Source Licence

Branch: main
Priorität: niedrig

Open Source Projekte haben normalerweise Lizenzbedienungen, nicht nur ein 'c' im Kreis. Es gibt viele gute Lizenzvarianten, MIT, Copyleft, BSD, Creative Commons License, GNU etc.

-Welche Lizenz wollen wir?
-Link auf Lizenzbedingungen a la "Kleingedrucktes"

SSL Zertifikat

  • Ticket schreiben um Zertifikat zu beantragen
  • Zertifikate aufspielen
  • HTTPS testen
  • Http zugriffe von Port 80 auf Port 443 umbiegen

Timeout tests

  • Test ob vergessliche Nutzer wirklich um 18:00 automatisch ausgeheckt werden
  • Falls technisch machbar, Löschfristentest

Checkin in Raum mit leeren Mail-Adressen verhindern

Aktuell kann man sich z.B. mit @stud.hs-mannheim.de einchecken, ohne etwas vor dem @ angegeben zu haben, das sollte sowohl client- als auch serverseitig geprüft werden. Serverseitig dann am besten schauen, dass es eine gültige Mail-Adresse ist. Dafür gibt es in controller.Utilities die Methode checkMailAdressSyntax.

Rechte management Rollen

Rolle "Contakt_tracer" für die Kontaktperson zum Gesundheitsamt, statt Admin der alles darf.

Grund: zentrales Feature der Software liegt darin das sie einfach zu benutzen ist, auch für Hygienebeauftragte und Kontaktpersonen zum Gesundheitsamt.

Nebeneffekt: Sicherheitszugewinn

(Optional rolle Professor streichen, wenn sie nicht mit Funktionen verbunden ist)

Abmelden aus überfollem Raum

Wenn ein User sich in einen übervollen Raum begeben will kommt:
"Raumkapazität bereits erreicht, bitte den Raum nicht betreten."
das ist gut.

Soll der User trotzdem in den Raum eingeloggt werden?
Falls nicht, braucht er dann einen aus dem letzten Raum abmelden Link?

Ansprechpartner klären auf Landingpage eintragen

Wenn etwas schief geht, nicht funktioniert oder bei alltemeinen Fragen sind ansprechpartner gut. Die sollten Auf der Weboberfläche vermerkt werden.

  • Ansprechpartner für technische Probleme
  • Ansprechpartner für Interessenten
  • Email vom Contact Tracing
  • Email auf Error Page
  • Link für die Doku
  • Links für das Github Repo

Serversetup

  • DNS für Fully quallified hoste name
  • Posfix konfiguration
  • Fail2Ban anpassen
  • Autoupdate anpassen

Input field for room PIN and verification

Currently there is no way to manually enter the PIN code to enter a room. Additionally the pin code input (automatic or otherwise) is not yet verified and is missing Tests.

Raum Reset ermöglichen (für alle Mitarbeiter der hs)

Es muss eine Möglichkeit geben alle Personen aus dem Raum auszuchecken

  • Nutzer muss gewarnt werden was passiert
  • Nutzer kann die Warnung nur schließen, wenn er bestätigt, dass er sich im klaren ist was er da macht
  • Hinweis auf Rechtliche Folgen bei Missbrauch

Roomupload file extension check

Aktuell werden einfach nur Dateien mit der Endung .csv angezeigt.
Der Nutzer kann das jedoch einfach ändern und somit beliebige Dateien hochladen. (Alles außer CSV gibt einen Fehler-Code:500)

Wäre es sinnvoll eine serverseitige Prüfung einzubauen ?

Mail an Lehrende und Studierende

Kurze Info Mail an die Mailverteiler.

  • Neue Türschilder, QR Code scannen für Corona Tracing
  • Anleitung und mehr Infos unter www....
  • Ausloggen nicht vergessen
  • Papier und Excel listen nicht mehr nötig

"About Project" statt "Veranstaltungsliste" im Home

Branch: Main
Priorität :mittel
Aktuell enthält Home ein paar links und die Veranstaltungsliste. Für die Liste gibt es noch einen extra Link.

Für bessere Usabilltiy würde ich mir als Benutzer, der auf einen Link klickt wünschen schnell zu verstehen, worum es auf der Seite geht.

Ein paar erklärende einleitende Sätze währen toll ZB

  • was ist das für eine webapp
  • was kann die App (Erklärungssatz + Link)
  • wieso Selbstbau, und von wem

Neues Template nutzten!

Dev branch, home=500

Server schmiert ab wenn ich auf das Home Icon klicke

2020-12-21 10:34:58.043 WARN 7740 --- [nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 42122, SQLState: 42S22
2020-12-21 10:34:58.043 ERROR 7740 --- [nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : Column "VERANSTALT0_.RAUMKAPAZITAET" not found; SQL statement:
select veranstalt0_.id as col_0_0_, veranstalt0_.name as col_1_0_, veranstalt0_.raumkapazitaet as col_2_0_, veranstalt0_.datum as col_3_0_, veranstalt0_.angelegt_von as col_4_0_ from veranstaltung veranstalt0_ where veranstalt0_.datum>=? order by veranstalt0_.datum asc [42122-200]
2020-12-21 10:34:58.045 ERROR 7740 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] threw exception
.....
HTTP Status 500 – Internal Server Error
ERROR 7740 --- [nio-8080-exec-6] o.a.c.c.C.[Tomcat].[localhost] : Exception Processing ErrorPage[errorCode=0, location=/error]

Kontaktverfolgung: keine Kontakte gefunden

Branch: Main
Priorität: Hoch

Nach einchecken von 4 Testnutzern, in eine Veranstaltung mit Kapazität 3 wird bei keinem ein Kontakt gefunden/angezeigt.

."Für die angegebene Mail-Adresse konnten keine Kontakte gefunden werden"
Ich bin mir sicher das ging mal.

Repository für OpenSource vorbereiten

Aktuelles Reposatory bereinigen, so das es öffentlich gestellt werden kann, oder neues erstellen ohne git history. (.git Datei löschen)

  • [ ]
  • Klassen und Methoden Refactoren so dass Sprache Einheitlich Englisch ist
  • Keine Hochschulspezifischen Dokumente
  • Kein Privatsphären/Datenschutz relevanten Inhalte
  • Installationsanweisung als Sepperate Datei, (Englisch)
  • Inhalt von ReadMe zu "About" (auch auf englisch?)

zeitmachine bug oder feature?

Sollten wir den Zeitraum etwas einschenken, wann Veranstaltungen angelegt werden können?

Diese beiden Test veranstaltungen sind nicht unbedingt realistisch, oder?

"Herzlich willkommen zu warp kern test (10.03.2050, 11:02)"
"Herzlich willkommen zu HS bekommt ersten Computer (10.01.1960, 11:06)"

wollen wir Veranstaltungen in der Vergangenheit erlauben? kann sich da überhaupt jemand einchecken?

Schilder druckfertig

  • Schilder druckfertig
  • Satz "Informationen und Anleitung unter"
  • URL mit Anleitung auf Schilder
  • Zuständige benachrichtigen sagen
  • stichprobenhaft prüfen ob schilder aufgehängt sind

Manuellen Checkin gegen automatisierte Fake-Logins absichern

Morittz: Gegen die Fake-Einträge hatte ich noch die Idee einen z.B. 4 stelligen Pin auf die Printouts für jeden Raum zu schreiben, den man beim Check-in eingeben muss. Im QR wäre der natürlich integriert. Das verhindert zwar nicht alle Attacken, aber ich glaube kaum das sich jemand in der HS die Mühe macht, alle Zettel abklappert und die PINs Online leakt.

Tasks:

  • PIN im backend #76
  • PIN auf printouts #81
  • PIN input und Überprüfung #79

Teilnehmer nachträglich eintragen?

Viele Corona Apps haben ein Feature "andere Teilnehmer eintragen".

Manche wollen das ein Admin nachträglich sehr viel Papier abtippt. :(

Andere erlauben das ein zweiter User in anderem Browser Tab eingetragen werden kann, und beide wieder aus checken. Ich kann nicht einschätzen wie gut/schlecht das mit den Session Tolkens/ cookies passt.

Wie realistisch ist dieses "Nice to have?"

CSV Upload Tests

Der Upload wird momentan nicht automatisch getestet.

Folgende Testfälle sollten mindestens abgedeckt werden:

  • Erneutes hochladen der Liste überschreibt Kapazitäten, aber behält Raum PINs bei #90
  • Hochladen einer Teilliste mit gemischt neuen und bestehenden Räumen
  • Import sollte Batch Operation verwenden bzw nicht jeden Raum einzeln speichern
  • Auch der neue Excel-Import sollte mitgetestet werden

Alle Wege führen nach Log in

Auf Branch Main
Home und CTT führen nach Home. Das ist gut. Alles was einen Login erfordert führt zur Login Page. ( Kontaktverfolgung, Login)

  • Wieso ist Login für Veranstaltung anlegen?
  • Was ist der unterschied zwischen QR code generieren für eine neu Veranstaltung, und einen QR Code anzeigen als Gastgeber?
  • Wieso führt "Veranstaltungsliste" in der Navbar zum Login?

Anderen Nutzer Einftragen

Kundenwunsch:
Andere Nutzer eintragen können.
-Vorschlag bei eigenem eintragen einen Knopf "andere Nutzer eintragen"

(Priorität niedriger als Rollout, Vorlesungsbeginn)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.