Initial commit

This commit is contained in:
Sebastian Seedorf
2021-04-17 22:31:16 +02:00
commit a1df114a5a
20 changed files with 3001 additions and 0 deletions

97
views/impressum.pug Normal file
View File

@@ -0,0 +1,97 @@
extends layout.pug
block body
- const mail = 'web<span style="display: none;">REMOVE</span>{at<!-- hehehe -->}s<!-- hehehe -->eb<span style="display: none;">DEL<!-- hehehe -->ETE</span>se[dot]de'
.impressum
h1 Impressum
h2 Angaben gem&auml;&szlig; &sect; 5 TMG:
p
| Sebastian Seedorf
h3 Postanschrift:
p
| Charlottenburger Ufer 3a
br
| 10587 Berlin
br
h3 Kontakt:
p E-Mail: !{mail}
h2 Information gem&auml;&szlig; &sect; 36 VSBG
p Gem&auml;&szlig; &sect; 36 VSBG (Verbraucherstreitbeilegungsgesetz &ndash; Gesetz &uuml;ber die alternative Streitbeilegung in Verbrauchersachen) erkl&auml;rt der Betreiber dieser Website:
p Wir sind weder bereit noch verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen.
p
em
| Das Impressum wurde mit dem
a(href='https://www.activemind.de/datenschutz/impressums-generator/') Impressums-Generator der activeMind AG
| erstellt.
h1 Datenschutzerkl&auml;rung
p Verantwortlicher im Sinne der Datenschutzgesetze, insbesondere der EU-Datenschutzgrundverordnung (DSGVO), ist:
p
| Sebastian Seedorf
br
| !{mail}
h2 Ihre Betroffenenrechte
p Unter den angegebenen Kontaktdaten unseres Datenschutzbeauftragten k&ouml;nnen Sie jederzeit folgende Rechte aus&uuml;ben:
ul
li Auskunft &uuml;ber Ihre bei uns gespeicherten Daten und deren Verarbeitung (Art. 15 DSGVO),
li Berichtigung unrichtiger personenbezogener Daten (Art. 16 DSGVO),
li L&ouml;schung Ihrer bei uns gespeicherten Daten (Art. 17 DSGVO),
li Einschr&auml;nkung der Datenverarbeitung, sofern wir Ihre Daten aufgrund gesetzlicher Pflichten noch nicht l&ouml;schen d&uuml;rfen (Art. 18 DSGVO),
li Widerspruch gegen die Verarbeitung Ihrer Daten bei uns (Art. 21 DSGVO) und
li Daten&uuml;bertragbarkeit, sofern Sie in die Datenverarbeitung eingewilligt haben oder einen Vertrag mit uns abgeschlossen haben (Art. 20 DSGVO).
p Sofern Sie uns eine Einwilligung erteilt haben, k&ouml;nnen Sie diese jederzeit mit Wirkung f&uuml;r die Zukunft widerrufen.
p Sie k&ouml;nnen sich jederzeit mit einer Beschwerde an eine Aufsichtsbeh&ouml;rde wenden, z. B. an die zust&auml;ndige Aufsichtsbeh&ouml;rde des Bundeslands Ihres Wohnsitzes oder an die f&uuml;r uns als verantwortliche Stelle zust&auml;ndige Beh&ouml;rde.
p Eine Liste der Aufsichtsbeh&ouml;rden (f&uuml;r den nicht&ouml;ffentlichen Bereich) mit Anschrift finden Sie unter:
a(href='https://www.bfdi.bund.de/DE/Infothek/Anschriften_Links/anschriften_links-node.html' target='_blank' rel='nofollow noopener')
| https://www.bfdi.bund.de/DE/Infothek/Anschriften_Links/anschriften_links-node.html
| .
h2 Erfassung allgemeiner Informationen beim Besuch unserer Website
h3 Art und Zweck der Verarbeitung:
p Wenn Sie auf unsere Website zugreifen, d.h., wenn Sie sich nicht registrieren oder anderweitig Informationen &uuml;bermitteln, werden automatisch Informationen allgemeiner Natur erfasst. Diese Informationen (Server-Logfiles) beinhalten etwa die Art des Webbrowsers, das verwendete Betriebssystem, den Domainnamen Ihres Internet-Service-Providers, Ihre IP-Adresse und &auml;hnliches.
p Sie werden insbesondere zu folgenden Zwecken verarbeitet:
ul
li Sicherstellung eines problemlosen Verbindungsaufbaus der Website,
li Sicherstellung einer reibungslosen Nutzung unserer Website,
li Auswertung der Systemsicherheit und -stabilit&auml;t sowie
li zur Optimierung unserer Website.
p Wir verwenden Ihre Daten nicht, um R&uuml;ckschl&uuml;sse auf Ihre Person zu ziehen. Informationen dieser Art werden von uns ggfs. anonymisiert statistisch ausgewertet, um unseren Internetauftritt und die dahinterstehende Technik zu optimieren.
h3 Rechtsgrundlage und berechtigtes Interesse:
p Die Verarbeitung erfolgt gem&auml;&szlig; Art. 6 Abs. 1 lit. f DSGVO auf Basis unseres berechtigten Interesses an der Verbesserung der Stabilit&auml;t und Funktionalit&auml;t unserer Website.
h3 Empf&auml;nger:
p Empf&auml;nger der Daten sind ggf. technische Dienstleister, die f&uuml;r den Betrieb und die Wartung unserer Webseite als Auftragsverarbeiter t&auml;tig werden.
h3 Speicherdauer:
p Die Daten werden gel&ouml;scht, sobald diese f&uuml;r den Zweck der Erhebung nicht mehr erforderlich sind. Dies ist f&uuml;r die Daten, die der Bereitstellung der Website dienen, grunds&auml;tzlich der Fall, wenn die jeweilige Sitzung beendet ist.
p
h3 Bereitstellung vorgeschrieben oder erforderlich:
p Die Bereitstellung der vorgenannten personenbezogenen Daten ist weder gesetzlich noch vertraglich vorgeschrieben. Ohne die IP-Adresse ist jedoch der Dienst und die Funktionsf&auml;higkeit unserer Website nicht gew&auml;hrleistet. Zudem k&ouml;nnen einzelne Dienste und Services nicht verf&uuml;gbar oder eingeschr&auml;nkt sein. Aus diesem Grund ist ein Widerspruch ausgeschlossen.
h2 Verwendung von Scriptbibliotheken (Google Webfonts)
p Um unsere Inhalte browser&uuml;bergreifend korrekt und grafisch ansprechend darzustellen, verwenden wir auf dieser Website &bdquo;Google Web Fonts&ldquo; der Google LLC (1600 Amphitheatre Parkway, Mountain View, CA 94043, USA; nachfolgend &bdquo;Google&ldquo;) zur Darstellung von Schriften.
p
| Weitere Informationen zu Google Web Fonts finden Sie unter
a(href='https://developers.google.com/fonts/faq' rel='noopener nofollow' target='_blank') https://developers.google.com/fonts/faq
| und in der Datenschutzerkl&auml;rung von Google:
a(href='https://www.google.com/policies/privacy/' rel='noopener nofollow' target='_blank') https://www.google.com/policies/privacy/
| .
h2 SSL-Verschl&uuml;sselung
p
| Um die Sicherheit Ihrer Daten bei der &Uuml;bertragung zu sch&uuml;tzen, verwenden wir dem aktuellen Stand der Technik entsprechende Verschl&uuml;sselungsverfahren (z. B. SSL) &uuml;ber HTTPS.
hr
h2 Information &uuml;ber Ihr Widerspruchsrecht nach Art. 21 DSGVO
h3 Einzelfallbezogenes Widerspruchsrecht
p Sie haben das Recht, aus Gr&uuml;nden, die sich aus Ihrer besonderen Situation ergeben, jederzeit gegen die Verarbeitung Sie betreffender personenbezogener Daten, die aufgrund Art. 6 Abs. 1 lit. f DSGVO (Datenverarbeitung auf der Grundlage einer Interessenabw&auml;gung) erfolgt, Widerspruch einzulegen; dies gilt auch f&uuml;r ein auf diese Bestimmung gest&uuml;tztes Profiling im Sinne von Art. 4 Nr. 4 DSGVO.
p Legen Sie Widerspruch ein, werden wir Ihre personenbezogenen Daten nicht mehr verarbeiten, es sei denn, wir k&ouml;nnen zwingende schutzw&uuml;rdige Gr&uuml;nde f&uuml;r die Verarbeitung nachweisen, die Ihre Interessen, Rechte und Freiheiten &uuml;berwiegen, oder die Verarbeitung dient der Geltendmachung, Aus&uuml;bung oder Verteidigung von Rechtsanspr&uuml;chen.
h3 Empf&auml;nger eines Widerspruchs
p
| Sebastian Seedorf
br
| !{mail}
hr
h2 &Auml;nderung unserer Datenschutzbestimmungen
p Wir behalten uns vor, diese Datenschutzerkl&auml;rung anzupassen, damit sie stets den aktuellen rechtlichen Anforderungen entspricht oder um &Auml;nderungen unserer Leistungen in der Datenschutzerkl&auml;rung umzusetzen, z.B. bei der Einf&uuml;hrung neuer Services. F&uuml;r Ihren erneuten Besuch gilt dann die neue Datenschutzerkl&auml;rung.
h2 Fragen an den Datenschutzbeauftragten
p Wenn Sie Fragen zum Datenschutz haben, schreiben Sie uns bitte eine E-Mail oder wenden Sie sich direkt an die f&uuml;r den Datenschutz verantwortliche Person in unserer Organisation:
p
em
| Die Datenschutzerkl&auml;rung wurde mithilfe der activeMind AG erstellt, den Experten f&uuml;r
a(href='https://www.activemind.de/datenschutz/datenschutzbeauftragter/' target='_blank' rel='noopener') externe Datenschutzbeauftragte
| (Version #2020-09-30).

21
views/index.pug Normal file
View File

@@ -0,0 +1,21 @@
extends layout.pug
block body
.index
p
| Aktuell werden täglich &#32;
span.big-number(data-value=Math.floor(dayCount)) #{Math.floor(dayCount)}
| Impfungen durchgeführt. &#32;
span.big-number(data-value=firstVac) #{firstVac}
| haben bisher mindestens eine Impfung erhalten, davon &#32;
span.big-number(data-value=secondVac) #{secondVac}
| schon die zweite Impfung.
p
| Wenn das so weiter geht, dann haben 80% am
p.mega-date(data-value=finalDate.getTime()) #{finalDate.toLocaleDateString(locale, { year: 'numeric', month: 'numeric', day: 'numeric' })}
p
| zwei Impfungen erhalten.
p.footer.margin-top Quelle: &#32;
a(href="https://impfdashboard.de/") Offizelle Datensätze tagesaktuell bereitgestellt durch das RKI und das BMG
p.footer Quelle: &#32;
a(href="/impressum") Impressum & Datenschutzerklärung

34
views/layout.pug Normal file
View File

@@ -0,0 +1,34 @@
doctype html
html(lang='de')
head
title Wann ist es vorbei?
meta(name='title' content='Wann ist es vorbei?')
meta(name='description' content='Wann sind endlich genug Leute geimpft? Wann kehrt endlich wieder Normalität ein?')
meta(name='keywords' content='Corona, Impfung, Datum, RKI, AstraZeneca, Normalität')
meta(name='robots' content='index, follow')
meta(http-equiv='Content-Type' content='text/html; charset=utf-8')
meta(name='language' content='German')
meta(name='revisit-after' content='7 days')
meta(name='author' content='Sebastian Seedorf')
// Webapp
link(rel='manifest' href='/public/manifest.json')
meta(name='mobile-web-app-capable' content='yes')
meta(name='apple-mobile-web-app-capable' content='yes')
meta(name='application-name' content='Corona-Uhr')
meta(name='apple-mobile-web-app-title' content='Corona-Uhr')
meta(name='theme-color' content='#FD1D1D')
meta(name='msapplication-navbutton-color' content='#FD1D1D')
meta(name='apple-mobile-web-app-status-bar-style' content='black-translucent')
meta(name='msapplication-starturl' content='/')
meta(name='viewport' content='width=device-width, initial-scale=1, shrink-to-fit=no')
link(rel='icon' sizes='172x172' href='/public/homescreen.png')
link(rel='apple-touch-icon' sizes='172x172' href='/public/homescreen.png')
block scripts
script(src="/public/script.js")
link(rel="preconnect", href="https://fonts.gstatic.com")
link(rel="stylesheet", href="https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,900;1,400;1,900&display=swap")
link(rel="stylesheet", href="/public/style.css")
body(onload="onloaded()")
block body