added imprint and data privacy page

master
alex 2024-09-29 15:57:54 +02:00
parent fd1d16ccb7
commit 622f5a5ca9
16 changed files with 750 additions and 31 deletions

7
commit-and-push.sh Executable file
View File

@ -0,0 +1,7 @@
git add *
read -p "Commit message: " commit_message
git commit -m "$commit_message"
git push -u origin master

View File

@ -2,31 +2,33 @@ npm run build
# create zip file of build folder
zip -r build.zip build
zip -r build.zip .next
# conncect to server to clear folder
# connect to server to clear folder
ssh root@93.177.67.38 << EOF
cd /var/www/html/navilearn-landingpage/
rm -rf *
cd /home/navilearn-landingpage/
rm -rf .next/
exit
EOF
# copy zip file to server
scp build.zip root@93.177.67.38:/var/www/html/navilearn-landingpage/
scp build.zip root@93.177.67.38:/home/navilearn-landingpage/
# connect to server
ssh root@93.177.67.38 << EOF
cd /var/www/html/navilearn-landingpage/
cd /home/navilearn-landingpage/
unzip build.zip
mv /var/www/html/navilearn-landingpage/build/* /var/www/html/navilearn-landingpage/
rm -rf /var/www/html/navilearn-landingpage/build
rm build.zip
exit
EOF
# remove zip file from local machine
rm build.zip
rm build.zip
echo " "
echo " "
echo "Deployment Done. Dont forget to restart the service!"

View File

@ -14,7 +14,7 @@ export default function Login() {
return (
<SlimLayout>
<div className="flex">
<Link href="/" aria-label="Home">
<Link href="/" aria-label="Startseite">
<Logo className="h-10 w-auto" />
</Link>
</div>

View File

@ -11,7 +11,7 @@ export default function RegisterForm() {
event.preventDefault()
const response = await fetch(
'https://navilearnapi.ex.umbach.dev/api/v1/organization',
`https://${process.env.NODE_ENV === 'production' ? window.location.host : 'navilearnapi.ex.umbach.dev'}/api/v1/organization`,
{
method: 'POST',
headers: {

View File

@ -6,13 +6,17 @@ import { SlimLayout } from '@/components/SlimLayout'
import RegisterForm from './form'
export const metadata: Metadata = {
title: 'Sign Up',
title: 'Registrierung',
}
export default function Register() {
return (
<SlimLayout>
<Link href="/" aria-label="Home" className="flex items-center text-sm">
<Link
href="/"
aria-label="Startseite"
className="flex items-center text-sm"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
@ -30,7 +34,7 @@ export default function Register() {
</Link>
<div className="mt-4 flex">
<Link href="/" aria-label="Home">
<Link href="/" aria-label="Startseite">
<Logo className="h-10 w-auto" />
</Link>
</div>
@ -38,7 +42,7 @@ export default function Register() {
Jetzt kostenlos registrieren
</h2>
<p className="mt-2 text-sm text-gray-700">
Testen Sie 30 Tage lang kostenlos NaviLearn.
Testen Sie NaviLearn kostenlos.
</p>
<RegisterForm />

View File

@ -0,0 +1,520 @@
import { Container } from '@/components/Container'
import {
Anchor,
BaseBoldText,
BoldText,
List,
ListItem,
Text,
} from '@/components/Typography'
export default function Datenschutz() {
return (
<Container className="pb-12">
<h1 className="text-xl font-bold text-gray-900 sm:text-3xl">
Datenschutzerklärung
</h1>
<BoldText>1. Datenschutz auf einen Blick</BoldText>
<BaseBoldText>Allgemeine Hinweise</BaseBoldText>
<Text>
Die folgenden Hinweise geben einen einfachen Überblick darüber, was mit
Ihren personenbezogenen Daten passiert, wenn Sie diese Website besuchen.
Personenbezogene Daten sind alle Daten, mit denen Sie persönlich
identifiziert werden können. Ausführliche Informationen zum Thema
Datenschutz entnehmen Sie unserer unter diesem Text aufgeführten
Datenschutzerklärung.
</Text>
<BoldText>Datenerfassung auf dieser Website</BoldText>
<BoldText>
Wer ist verantwortlich für die Datenerfassung auf dieser Website?
</BoldText>
<Text>
Die Datenverarbeitung auf dieser Website erfolgt durch den
Websitebetreiber. Dessen Kontaktdaten können Sie dem Abschnitt Hinweis
zur Verantwortlichen Stelle in dieser Datenschutzerklärung entnehmen.
</Text>
<BoldText>Wie erfassen wir Ihre Daten?</BoldText>
<Text>
Ihre Daten werden zum einen dadurch erhoben, dass Sie uns diese
mitteilen. Hierbei kann es sich z. B. um Daten handeln, die Sie in ein
Kontaktformular eingeben.
</Text>
<Text className="mt-4">
Andere Daten werden automatisch oder nach Ihrer Einwilligung beim Besuch
der Website durch unsere IT-Systeme erfasst. Das sind vor allem
technische Daten (z. B. Internetbrowser, Betriebssystem oder Uhrzeitdes
Seitenaufrufs). Die Erfassung dieser Daten erfolgt automatisch, sobald
Sie diese Website betreten.
</Text>
<BoldText>Wofür nutzen wir Ihre Daten?</BoldText>
<Text>
Ein Teil der Daten wird erhoben, um eine fehlerfreie Bereitstellung der
Website zu gewährleisten. Andere Daten können zur Analyse Ihres
Nutzerverhaltens verwendet werden.
</Text>
<BoldText>Welche Rechte haben Sie bezüglich Ihrer Daten?</BoldText>
<Text>
Sie haben jederzeit das Recht, unentgeltlich Auskunft über Herkunft,
Empfänger und Zweck Ihrer gespeicherten personenbezogenen Daten zu
erhalten. Sie haben außerdem ein Recht, die Berichtigung oder Löschung
dieser Daten zu verlangen. Wenn Sie eine Einwilligung zur
Datenverarbeitung erteilt haben, können Sie diese Einwilligung jederzeit
für die Zukunft widerrufen. Außerdem haben Sie das Recht, unter
bestimmten Umständen die Einschränkung der Verarbeitung Ihrer
personenbezogenen Daten zu verlangen. Des Weiteren steht Ihnen ein
Beschwerderecht bei der zuständigen Aufsichtsbehörde zu. Hierzu sowie zu
weiteren Fragen zum Thema Datenschutz können Sie sich jederzeit an uns
wenden.
</Text>
<BoldText>Analyse-Tools und Tools von Drittanbietern</BoldText>
<Text>
Beim Besuch dieser Website kann Ihr Surf-Verhalten statistisch
ausgewertet werden. Das geschieht vor allem mit sogenannten
Analyseprogrammen.
</Text>
<Text className="mt-4">
Detaillierte Informationen zu diesen Analyseprogrammen finden Sie in der
folgenden Datenschutzerklärung.
</Text>
<BaseBoldText>2. Hosting</BaseBoldText>
<Text>
Diese Website wird extern gehostet. Die personenbezogenen Daten, die auf
dieser Website erfasst werden, werden auf den Servern des Hosters / der
Hoster gespeichert. Hierbei kann es sich v. a. um IP-Adressen,
Kontaktanfragen, Meta- und Kommunikationsdaten, Vertragsdaten,
Kontaktdaten, Namen, Websitezugriffe und sonstige Daten, die über eine
Website generiert werden, handeln.
</Text>
<BoldText>Externes Hosting</BoldText>
<Text>
Diese Website wird extern gehostet. Die personenbezogenen Daten, die auf
dieser Website erfasst werden, werden auf den Servern des Hosters / der
Hoster gespeichert. Hierbei kann es sich v. a. um IP-Adressen,
Kontaktanfragen, Meta- und Kommunikationsdaten, Vertragsdaten,
Kontaktdaten, Namen, Websitezugriffe und sonstige Daten, die über eine
Website generiert werden, handeln.
</Text>
<Text className="mt-4">
Das externe Hosting erfolgt zum Zwecke der Vertragserfüllung gegenüber
unseren potenziellen und bestehenden Kunden (Art. 6 Abs. 1 lit. b DSGVO)
und im Interesse einer sicheren, schnellen und effizienten
Bereitstellung unseres Online-Angebots durch einen professionellen
Anbieter (Art. 6 Abs. 1 lit. f DSGVO). Sofern eine entsprechende
Einwilligung abgefragt wurde, erfolgt die Verarbeitung ausschließlich
auf Grundlage von Art. 6 Abs. 1 lit. a DSGVO und § 25 Abs. 1 TTDSG,
soweit die Einwilligung die Speicherung von Cookies oder den Zugriff auf
Informationen im Endgerät des Nutzers (z. B. Device-Fingerprinting) im
Sinne des TTDSG umfasst. Die Einwilligung ist jederzeit widerrufbar.
</Text>
<Text className="mt-4">
Unser Hoster wird Ihre Daten nur insoweit verarbeiten, wie dies zur
Erfüllung seiner Leistungspflichten erforderlich ist und unsere
Weisungen in Bezug auf diese Daten befolgen.
</Text>
<Text className="mt-4">Wir setzen folgenden Hoster ein:</Text>
<Text className="mt-4">
netcup GmbH
<br /> Daimlerstraße 25
<br />
76185 Karlsruhe
</Text>
<BaseBoldText>
3. Allgemeine Hinweise und Pflichtinformationen
</BaseBoldText>
<BoldText>Datenschutz</BoldText>
<Text>
Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten
sehr ernst. Wir behandeln Ihre personenbezogenen Daten vertraulich und
entsprechend den gesetzlichen Datenschutzvorschriften sowie dieser
Datenschutzerklärung.
</Text>
<Text className="mt-4">
Wenn Sie diese Website benutzen, werden verschiedene personenbezogene
Daten erhoben. Personenbezogene Daten sind Daten, mit denen Sie
persönlich identifiziert werden können. Die vorliegende
Datenschutzerklärung erläutert, welche Daten wir erheben und wofür wir
sie nutzen. Sie erläutert auch, wie und zu welchem Zweck das geschieht.
</Text>
<Text className="mt-4">
Wir weisen darauf hin, dass die Datenübertragung im Internet (z. B. bei
der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein
lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht
möglich.
</Text>
<BoldText>Hinweis zur verantwortlichen Stelle</BoldText>
<Text>
Die verantwortliche Stelle für die Datenverarbeitung auf dieser Website
ist:
</Text>
<Text className="mt-4">
Jan Umbach
<br /> Tannenwäldchen 20
<br /> 34212 Melsungen
</Text>
<Text className="mt-4">
Telefon: <Anchor href="tel:+49 160 95040430">+49 160 95040430</Anchor>
<br /> E-Mail:{' '}
<Anchor href="mailto:navilearn@jannex.de">navilearn@jannex.de</Anchor>
</Text>
<Text className="mt-4">
Verantwortliche Stelle ist die natürliche oder juristische Person, die
allein oder gemeinsam mit anderen über die Zwecke und Mittel der
Verarbeitung von personenbezogenen Daten (z. B. Namen, E-Mail-Adressen
o. Ä.) entscheidet.
</Text>
<BoldText>Speicherdauer</BoldText>
<Text>
Soweit innerhalb dieser Datenschutzerklärung keine speziellere
Speicherdauer genannt wurde, verbleiben Ihre personenbezogenen Daten bei
uns, bis der Zweck für die Datenverarbeitung entfällt. Wenn Sie ein
berechtigtes Löschersuchen geltend machen oder eine Einwilligung zur
Datenverarbeitung widerrufen, werden Ihre Daten gelöscht, sofern wir
keine anderen rechtlich zulässigen Gründe für die Speicherung Ihrer
personenbezogenen Daten haben (z. B. steuer- oder handelsrechtliche
Aufbewahrungsfristen); im letztgenannten Fall erfolgt die Löschung nach
Fortfall dieser Gründe.
</Text>
<BoldText>
Allgemeine Hinweise zu den Rechtsgrundlagen der Datenverarbeitung auf
dieser Website
</BoldText>
<Text>
Sofern Sie in die Datenverarbeitung eingewilligt haben, verarbeiten wir
Ihre personenbezogenen Daten auf Grundlage von Art. 6 Abs. 1 lit. a
DSGVO bzw. Art. 9 Abs. 2 lit. a DSGVO, sofern besondere Datenkategorien
nach Art. 9 Abs. 1 DSGVO verarbeitet werden. Im Falle einer
ausdrücklichen Einwilligung in die Übertragung personenbezogener Daten
in Drittstaaten erfolgt die Datenverarbeitung außerdem auf Grundlage von
Art. 49 Abs. 1 lit. a DSGVO. Sofern Sie in die Speicherung von Cookies
oder in den Zugriff auf Informationen in Ihr Endgerät (z. B. via
Device-Fingerprinting) eingewilligt haben, erfolgt die Datenverarbeitung
zusätzlich auf Grundlage von § 25 Abs. 1 TTDSG. Die Einwilligung ist
jederzeit widerrufbar. Sind Ihre Daten zur Vertragserfüllung oder zur
Durchführung vorvertraglicher Maßnahmen erforderlich, verarbeiten wir
Ihre Daten auf Grundlage des Art. 6 Abs. 1 lit. b DSGVO. Des Weiteren
verarbeiten wir Ihre Daten, sofern diese zur Erfüllung einer rechtlichen
Verpflichtung erforderlich sind auf Grundlage von Art. 6 Abs. 1 lit. c
DSGVO. Die Datenverarbeitung kann ferner auf Grundlage unseres
berechtigten Interesses nach Art. 6 Abs. 1 lit. f DSGVO erfolgen. Über
die jeweils im Einzelfall einschlägigen Rechtsgrundlagen wird in den
folgenden Absätzen dieser Datenschutzerklärung informiert.
</Text>
<BoldText>Empfänger von personenbezogenen Daten</BoldText>
<Text>
Sofern Sie in die Datenverarbeitung eingewilligt haben, verarbeiten wir
Ihre personenbezogenen Daten auf Grundlage von Art. 6 Abs. 1 lit. a
DSGVO bzw. Art. 9 Abs. 2 lit. a DSGVO, sofern besondere Datenkategorien
nach Art. 9 Abs. 1 DSGVO verarbeitet werden. Im Falle einer
ausdrücklichen Einwilligung in die Übertragung personenbezogener Daten
in Drittstaaten erfolgt die Datenverarbeitung außerdem auf Grundlage von
Art. 49 Abs. 1 lit. a DSGVO. Sofern Sie in die Speicherung von Cookies
oder in den Zugriff auf Informationen in Ihr Endgerät (z. B. via
Device-Fingerprinting) eingewilligt haben, erfolgt die Datenverarbeitung
zusätzlich auf Grundlage von § 25 Abs. 1 TTDSG. Die Einwilligung ist
jederzeit widerrufbar. Sind Ihre Daten zur Vertragserfüllung oder zur
Durchführung vorvertraglicher Maßnahmen erforderlich, verarbeiten wir
IhrIm Rahmen unserer Geschäftstätigkeit arbeiten wir mit verschiedenen
externen Stellen zusammen. Dabei ist teilweise auch eine Übermittlung
von personenbezogenen Daten an diese externen Stellen erforderlich. Wir
geben personenbezogene Daten nur dann an externe Stellen weiter, wenn
dies im Rahmen einer Vertragserfüllung erforderlich ist, wenn wir
gesetzlich hierzu verpflichtet sind (z. B. Weitergabe von Daten an
Steuerbehörden), wenn wir ein berechtigtes Interesse nach Art. 6 Abs. 1
lit. f DSGVO an der Weitergabe haben oder wenn eine sonstige
Rechtsgrundlage die Datenweitergabe erlaubt. Beim Einsatz von
Auftragsverarbeitern geben wir personenbezogene Daten unserer Kunden nur
auf Grundlage eines gültigen Vertrags über Auftragsverarbeitung weiter.
Im Falle einer gemeinsamen Verarbeitung wird ein Vertrag über gemeinsame
Verarbeitung geschlossen.e Daten auf Grundlage des Art. 6 Abs. 1 lit. b
DSGVO. Des Weiteren verarbeiten wir Ihre Daten, sofern diese zur
Erfüllung einer rechtlichen Verpflichtung erforderlich sind auf
Grundlage von Art. 6 Abs. 1 lit. c DSGVO. Die Datenverarbeitung kann
ferner auf Grundlage unseres berechtigten Interesses nach Art. 6 Abs. 1
lit. f DSGVO erfolgen. Über die jeweils im Einzelfall einschlägigen
Rechtsgrundlagen wird in den folgenden Absätzen dieser
Datenschutzerklärung informiert.
</Text>
<BoldText>Widerruf Ihrer Einwilligung zur Datenverarbeitung</BoldText>
<Text>
Viele Datenverarbeitungsvorgänge sind nur mit Ihrer ausdrücklichen
Einwilligung möglich. Sie können eine bereits erteilte Einwilligung
jederzeit widerrufen. Die Rechtmäßigkeit der bis zum Widerruf erfolgten
Datenverarbeitung bleibt vom Widerruf unberührt.
</Text>
<BoldText>
Widerspruchsrecht gegen die Datenerhebung in besonderen Fällen sowie
gegen Direktwerbung (Art. 21 DSGVO)
</BoldText>
<Text>
WENN DIE DATENVERARBEITUNG AUF GRUNDLAGE VON ART. 6 ABS. 1 LIT. E ODER F
DSGVO ERFOLGT, HABEN SIE JEDERZEIT DAS RECHT, AUS GRÜNDEN, DIE SICH AUS
IHRER BESONDEREN SITUATION ERGEBEN, GEGEN DIE VERARBEITUNG IHRER
PERSONENBEZOGENEN DATEN WIDERSPRUCH EINZULEGEN; DIES GILT AUCH FÜR EIN
AUF DIESE BESTIMMUNGEN GESTÜTZTES PROFILING. DIE JEWEILIGE
RECHTSGRUNDLAGE, AUF DENEN EINE VERARBEITUNG BERUHT, ENTNEHMEN SIE
DIESER DATENSCHUTZERKLÄRUNG. WENN SIE WIDERSPRUCH EINLEGEN, WERDEN WIR
IHRE BETROFFENEN PERSONENBEZOGENEN DATEN NICHT MEHR VERARBEITEN, ES SEI
DENN, WIR KÖNNEN ZWINGENDE SCHUTZWÜRDIGE GRÜNDE FÜR DIE VERARBEITUNG
NACHWEISEN, DIE IHRE INTERESSEN, RECHTE UND FREIHEITEN ÜBERWIEGEN ODER
DIE VERARBEITUNG DIENT DER GELTENDMACHUNG, AUSÜBUNG ODER VERTEIDIGUNG
VON RECHTSANSPRÜCHEN (WIDERSPRUCH NACH ART. 21 ABS. 1 DSGVO).
</Text>
<Text className="mt-4">
WERDEN IHRE PERSONENBEZOGENEN DATEN VERARBEITET, UM DIREKTWERBUNG ZU
BETREIBEN, SO HABEN SIE DAS RECHT, JEDERZEIT WIDERSPRUCH GEGEN DIE
VERARBEITUNG SIE BETREFFENDER PERSONENBEZOGENER DATEN ZUM ZWECKE
DERARTIGER WERBUNG EINZULEGEN; DIES GILT AUCH FÜR DAS PROFILING, SOWEIT
ES MIT SOLCHER DIREKTWERBUNG IN VERBINDUNG STEHT. WENN SIE
WIDERSPRECHEN, WERDEN IHRE PERSONENBEZOGENEN DATEN ANSCHLIESSEND NICHT
MEHR ZUM ZWECKE DER DIREKTWERBUNG VERWENDET (WIDERSPRUCH NACH ART. 21
ABS. 2 DSGVO).
</Text>
<BoldText>Beschwerderecht bei der zuständigen Aufsichtsbehörde</BoldText>
<Text>
Im Falle von Verstößen gegen die DSGVO steht den Betroffenen ein
Beschwerderecht bei einer Aufsichtsbehörde, insbesondere in dem
Mitgliedstaat ihres gewöhnlichen Aufenthalts, ihres Arbeitsplatzes oder
des Orts des mutmaßlichen Verstoßes zu. Das Beschwerderecht besteht
unbeschadet anderweitiger verwaltungsrechtlicher oder gerichtlicher
Rechtsbehelfe.
</Text>
<BoldText>Recht auf Datenübertragbarkeit</BoldText>
<Text>
Sie haben das Recht, Daten, die wir auf Grundlage Ihrer Einwilligung
oder in Erfüllung eines Vertrags automatisiert verarbeiten, an sich oder
an einen Dritten in einem gängigen, maschinenlesbaren Format aushändigen
zu lassen. Sofern Sie die direkte Übertragung der Daten an einen anderen
Verantwortlichen verlangen, erfolgt dies nur, soweit es technisch
machbar ist.
</Text>
<BoldText>Auskunft, Berichtigung und Löschung</BoldText>
<Text>
Sie haben im Rahmen der geltenden gesetzlichen Bestimmungen jederzeit
das Recht auf unentgeltliche Auskunft über Ihre gespeicherten
personenbezogenen Daten, deren Herkunft und Empfänger und den Zweck der
Datenverarbeitung und ggf. ein Recht auf Berichtigung oder Löschung
dieser Daten. Hierzu sowiezu weiteren Fragen zum Thema personenbezogene
Daten können Sie sich jederzeit an uns wenden.
</Text>
<BoldText>Recht auf Einschränkung der Verarbeitung</BoldText>
<Text>
Sie haben das Recht, die Einschränkung der Verarbeitung Ihrer
personenbezogenen Daten zu verlangen. Hierzu können Sie sich jederzeit
an uns wenden. Das Recht auf Einschränkung der Verarbeitung besteht in
folgenden Fällen:
</Text>
<List>
<ListItem>
Wenn Sie die Richtigkeit Ihrer bei uns gespeicherten personenbezogenen
Daten bestreiten, benötigen wir in der Regel Zeit, um dies zu
überprüfen. Für die Dauer der Prüfung haben Sie das Recht, die
Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu
verlangen.
</ListItem>
<ListItem>
Wenn die Verarbeitung Ihrer personenbezogenen Daten unrechtmäßig
geschah/geschieht, können Sie statt der Löschung die Einschränkung der
Datenverarbeitung verlangen.
</ListItem>
<ListItem>
Wenn wir Ihre personenbezogenen Daten nicht mehr benötigen, Sie sie
jedoch zur Ausübung, Verteidigung oder Geltendmachung von
Rechtsansprüchen benötigen, haben Sie das Recht, statt der Löschung
die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu
verlangen.
</ListItem>
<ListItem>
Wenn Sie einen Widerspruch nach Art. 21 Abs. 1 DSGVO eingelegt haben,
muss eine Abwägung zwischen Ihren und unseren Interessen vorgenommen
werden. Solange noch nicht feststeht, wessen Interessen überwiegen,
haben Sie das Recht, die Einschränkung der Verarbeitung Ihrer
personenbezogenen Daten zu verlangen.
</ListItem>
</List>
<Text className="mt-4">
Wenn Sie die Verarbeitung Ihrer personenbezogenen Daten eingeschränkt
haben, dürfen diese Daten von ihrer Speicherung abgesehen nur mit
Ihrer Einwilligung oder zur Geltendmachung, Ausübung oder Verteidigung
von Rechtsansprüchen oder zum Schutz der Rechte einer anderen
natürlichen oder juristischen Person oder aus Gründen eines wichtigen
öffentlichen Interesses der Europäischen Union oder eines Mitgliedstaats
verarbeitet werden.
</Text>
<BoldText>SSL- bzw. TLS-Verschlüsselung</BoldText>
<Text>
Diese Seite nutzt aus Sicherheitsgründen und zum Schutz der Übertragung
vertraulicher Inhalte, wie zumBeispiel Bestellungen oder Anfragen, die
Sie an uns als Seitenbetreiber senden, eine SSL- bzw. TLS-
Verschlüsselung. Eine verschlüsselte Verbindung erkennen Sie daran, dass
die Adresszeile des Browsers vonhttp://“ auf „https://“ wechselt und an
dem Schloss-Symbol in Ihrer Browserzeile.
</Text>
<Text className="mt-4">
Wenn die SSL- bzw. TLS-Verschlüsselung aktiviert ist, können die Daten,
die Sie an uns übermitteln, nicht von Dritten mitgelesen werden.
</Text>
<BoldText>4. Datenerfassung auf dieser Website</BoldText>
<BaseBoldText>Cookies</BaseBoldText>
<Text className="mt-4">
Unsere Internetseiten verwenden so genannte Cookies. Cookies sind
kleine Datenpakete und richten auf Ihrem Endgerät keinen Schaden an. Sie
werden entweder vorübergehend für die Dauer einer Sitzung
(Session-Cookies) oder dauerhaft (permanente Cookies) auf Ihrem Endgerät
gespeichert. Session-Cookies werden nach Ende Ihres Besuchs automatisch
gelöscht. Permanente Cookies bleiben auf Ihrem Endgerät gespeichert, bis
Sie diese selbst löschen oder eine automatische Löschung durch Ihren
Webbrowser erfolgt.
</Text>
<Text className="mt-4">
Cookies können von uns (First-Party-Cookies) oder von Drittunternehmen
stammen (sog. Third-Party- Cookies). Third-Party-Cookies ermöglichen die
Einbindung bestimmter Dienstleistungen vonDrittunternehmen innerhalb von
Webseiten (z. B. Cookies zur Abwicklung von Zahlungsdienstleistungen).
</Text>
<Text className="mt-4">
Cookies haben verschiedene Funktionen. Zahlreiche Cookies sind technisch
notwendig, da bestimmte Webseitenfunktionen ohne diese nicht
funktionieren würden (z. B. die Warenkorbfunktion oder die Anzeige von
Videos). Andere Cookies können zur Auswertung des Nutzerverhaltens oder
zu Werbezwecken verwendet werden.
</Text>
<Text className="mt-4">
Cookies, die zur Durchführung des elektronischen Kommunikationsvorgangs,
zur Bereitstellung bestimmter, von Ihnen erwünschter Funktionen (z. B.
für die Warenkorbfunktion) oder zur Optimierung der Website (z. B.
Cookies zur Messung des Webpublikums) erforderlich sind (notwendige
Cookies), werden auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO
gespeichert, sofern keine andere Rechtsgrundlage angegeben wird.
</Text>
<Text className="mt-4">
Der Websitebetreiber hat ein berechtigtes Interesse an der Speicherung
von notwendigen Cookies zur technisch fehlerfreien und optimierten
Bereitstellung seiner Dienste. Sofern eine Einwilligung zur Speicherung
von Cookies und vergleichbaren Wiedererkennungstechnologien abgefragt
wurde, erfolgt die Verarbeitung ausschließlich auf Grundlage dieser
Einwilligung (Art. 6 Abs. 1 lit. a DSGVO und § 25 Abs. 1 TTDSG); die
Einwilligung ist jederzeit widerrufbar.
</Text>
<Text className="mt-4">
Sie können Ihren Browser so einstellen, dass Sie über das Setzen von
Cookies informiert werden und Cookies nur im Einzelfall erlauben, die
Annahme von Cookies für bestimmte Fälle oder generell ausschließen sowie
das automatische Löschen der Cookies beim Schließen des Browsers
aktivieren. Bei der Deaktivierung von Cookies kann die Funktionalität
dieser Website eingeschränkt sein.
</Text>
<Text className="mt-4">
Welche Cookies und Dienste auf dieser Website eingesetzt werden, können
Sie dieser Datenschutzerklärung entnehmen.
</Text>
<BoldText>5. Plugins und Tools</BoldText>
<BaseBoldText>Google Fonts</BaseBoldText>
<Text>
Diese Seite nutzt zur einheitlichen Darstellung von Schriftarten so
genannte Google Fonts, die von Google bereitgestellt werden. Beim Aufruf
einer Seite lädt Ihr Browser die benötigten Fonts in ihren Browsercache,
um Texte und Schriftarten korrekt anzuzeigen.
</Text>
<Text className="mt-4">
Zu diesem Zweck muss der von Ihnen verwendete Browser Verbindung zu den
Servern von Google aufnehmen. Hierdurch erlangt Google Kenntnis darüber,
dass über Ihre IP-Adresse diese Website aufgerufen wurde. Die Nutzung
von Google Fonts erfolgt auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO.
Der Websitebetreiber hat ein berechtigtes Interesse an der einheitlichen
Darstellung des Schriftbildes auf seiner Website. Sofern eine
entsprechende Einwilligung abgefragt wurde, erfolgt die Verarbeitung
ausschließlich auf Grundlage von Art. 6 Abs. 1 lit. a DSGVO und § 25
Abs. 1 TTDSG, soweit die Einwilligung die Speicherung von Cookies oder
den Zugriff auf Informationen im Endgerät des Nutzers (z. B.
Device-Fingerprinting) im Sinne des TTDSG umfasst. Die Einwilligung ist
jederzeit widerrufbar.
</Text>
<Text className="mt-4">
Wenn Ihr Browser Google Fonts nicht unterstützt, wird eine
Standardschrift von Ihrem Computer genutzt.
</Text>
<Text className="mt-4">
Weitere Informationen zu Google Fonts finden Sie unter
<br />
<Anchor href="https://developers.google.com/fonts/faq">
https://developers.google.com/fonts/faq
</Anchor>{' '}
und in der Datenschutzerklärung von Google: <br />
<Anchor href="https://policies.google.com/privacy">
https://policies.google.com/privacy
</Anchor>
.
</Text>
<Text className="mt-4">
Das Unternehmen verfügt über eine Zertifizierung nach dem EU-US Data
Privacy Framework (DPF). Der DPF ist ein Übereinkommen zwischen der
Europäischen Union und den USA, der die Einhaltung europäischer
Datenschutzstandards bei Datenverarbeitungen in den USA gewährleisten
soll. Jedes nach dem DPF zertifizierte Unternehmen verpflichtet sich,
diese Datenschutzstandards einzuhalten. Weitere Informationen hierzu
erhalten Sie vom Anbieter unter folgendem Link:
</Text>
<Anchor href="https://www.dataprivacyframework.gov/s/participant-search/participant- detail?contact=true&id=a2zt000000001L5AAI&status=Active">
https://www.dataprivacyframework.gov/s/participant-search/participant-
detail?contact=true&id=a2zt000000001L5AAI&status=Active
</Anchor>
<BoldText>Microsoft Clarity</BoldText>
<Text>
Diese Website nutzt den Webanalysedienst des folgenden Anbieters:
Microsoft Corporation, One Microsoft Way, Redmond, WA 98052-6399 USA
</Text>
<Text className="mt-4">
Mithilfe von Cookies und/oder vergleichbaren Technologien
(Tracking-Pixel, Web-Beacons, Algorithmen zum Auslesen von Endgeräte-
und Browserinformationen) erhebt und speichert der Dienst
pseudonymisierte Besucherdaten, darunter Informationen des verwendeten
Endgeräts wie die IP-Adresse und Browserinformationen, um sie für
statistische Analysen des Nutzungsverhaltens auf unserer Website
auszuwerten und pseudonymisierte Nutzungsprofile zu erstellen. Unter
anderem ist so die Auswertung von Bewegungsmustern (sog. Heatmaps)
möglich, welche die Dauer von Seitenbesuchen sowie Interaktionen mit
Seiteninhalten (z. B. Texteingaben, Scrollen, Klicks und Mouse-Overs)
aufzeigen. Die Pseudonymisierung schließt eine direkte
Personenbeziehbarkeit grundsätzlich aus. Eine Zusammenführung mit auf
andere Weise erhobenen Klardaten zu Ihrer Person findet nicht statt.
</Text>
<Text className="mt-4">
Alle oben beschriebenen Verarbeitungen, insbesondere das Auslesen oder
Speichern von Informationen auf dem verwendeten Endgerät, werden nur
dann vollzogen, wenn Sie uns gemäß Art. 6 Abs. 1 lit. a DSGVO dazu Ihre
ausdrückliche Einwilligung erteilt haben. Sie können Ihre erteilte
Einwilligung jederzeit mit Wirkung für die Zukunft widerrufen, indem Sie
diesen Dienst in dem auf der Webseite bereitgestellten
Cookie-Consent-Tool deaktivieren.
</Text>
<Text className="mt-4">
Für Datenübermittlungen in die USA hat sich der Anbieter dem
EU-US-Datenschutzrahmen (EU-US Data Privacy Framework) angeschlossen,
das auf Basis eines Angemessenheitsbeschlusses der Europäischen
Kommission die Einhaltung des europäischen Datenschutzniveaus
sicherstellt.
</Text>
<Text className="mt-4">
Quelle: <Anchor href="https://www.e-recht24.de">eRecht24</Anchor>
</Text>
</Container>
)
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

BIN
src/app/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,50 @@
import { Container } from '@/components/Container'
import { Anchor, BoldText, Text } from '@/components/Typography'
export default function Impressum() {
return (
<Container className="pb-12">
<h1 className="text-xl font-bold text-gray-900 sm:text-3xl">IMPRESSUM</h1>
<BoldText>Angaben gemäß § 5 TMG</BoldText>
<Text>Jan Umbach</Text>
<Text>Tannenwäldchen 20</Text>
<Text>34212 Melsungen</Text>
<BoldText>Kontakt</BoldText>
<Text>
Telefon: <Anchor href="tel:+49 160 95040430">+49 160 95040430</Anchor>
</Text>
<Text>
E-Mail:{' '}
<Anchor href="mailto:navilearn@jannex.de">navilearn@jannex.de</Anchor>
</Text>
<BoldText>Umsatzsteuer-ID</BoldText>
<Text>USt. wird nicht ausgewiesen (Kleinunternehmerregelung)</Text>
<BoldText>EU-Streitschlichtung</BoldText>
<Text>
Die Europäische Kommission stellt eine Plattform zur
Online-Streitbeilegung (OS) bereit:
</Text>
<Anchor href="https://ec.europa.eu/consumers/odr/">
https://ec.europa.eu/consumers/odr/
</Anchor>
{'.'}
<Text>Unsere E-Mail-Adresse finden Sie oben im Impressum.</Text>
<BoldText>
Verbraucher­streit­beilegung/Universal­schlichtungs­stelle
</BoldText>
<Text>
Wir sind nicht bereit oder verpflichtet, an Streitbeilegungsverfahren
vor einer Verbraucherschlichtungsstelle teilzunehmen.
</Text>
<Text className="mt-4">
Quelle: <Anchor href="https://www.e-recht24.de">eRecht24</Anchor>
</Text>
</Container>
)
}

View File

@ -3,6 +3,8 @@ import { Inter, Lexend } from 'next/font/google'
import clsx from 'clsx'
import '@/styles/tailwind.css'
import { Footer } from '@/components/Footer'
import { Header } from '@/components/Header'
export const metadata: Metadata = {
title: {
@ -39,7 +41,12 @@ export default function RootLayout({
lexend.variable,
)}
>
<body className="flex h-full flex-col">{children}</body>
<body className="flex h-full flex-col">
<Header />
{children}
<Footer />
</body>
</html>
)
}

View File

@ -8,19 +8,19 @@ export default function NotFound() {
return (
<SlimLayout>
<div className="flex">
<Link href="/" aria-label="Home">
<Link href="/" aria-label="Startseite">
<Logo className="h-10 w-auto" />
</Link>
</div>
<p className="mt-20 text-sm font-medium text-gray-700">404</p>
<h1 className="mt-3 text-lg font-semibold text-gray-900">
Page not found
Seite nicht gefunden
</h1>
<p className="mt-3 text-sm text-gray-700">
Sorry, we couldnt find the page youre looking for.
Wir konnten die Seite, die Sie suchen, nicht finden.
</p>
<Button href="/" className="mt-10">
Go back home
Zurück zur Startseite
</Button>
</SlimLayout>
)

View File

@ -1,17 +1,36 @@
import { CallToAction } from '@/components/CallToAction'
import { Faqs } from '@/components/Faqs'
import { Footer } from '@/components/Footer'
import { Header } from '@/components/Header'
import { Hero } from '@/components/Hero'
import { Pricing } from '@/components/Pricing'
import { PrimaryFeatures } from '@/components/PrimaryFeatures'
import { SecondaryFeatures } from '@/components/SecondaryFeatures'
import { Testimonials } from '@/components/Testimonials'
export default function Home() {
return (
<>
<Header />
{process.env.NODE_ENV === 'production' && (
<>
<script
defer
data-domain="navilearn.io"
src="https://anal.jannex.de/js/script.js"
></script>
<script
type="text/javascript"
dangerouslySetInnerHTML={{
__html: `
(function(c,l,a,r,i,t,y){
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
})(window, document, "clarity", "script", "${process.env.CLARITY_ID}");
`,
}}
></script>
</>
)}
<main>
<Hero />
<PrimaryFeatures />
@ -21,7 +40,6 @@ export default function Home() {
<Faqs />
<CallToAction />
</main>
<Footer />
</>
)
}

View File

@ -1,7 +1,7 @@
import { Buffer } from 'buffer'
export const Constants = {
API_URL: '.ex.umbach.dev',
API_URL: process.env.NEXT_PUBLIC_API_URL,
ROUTES: {
REGISTER: '/register',
},

View File

@ -1,13 +1,16 @@
import { Container } from '@/components/Container'
import { Logo } from '@/components/Logo'
import { NavLink } from '@/components/NavLink'
import Link from 'next/link'
export function Footer() {
return (
<footer className="bg-slate-50">
<Container>
<div className="py-16">
<Logo className="mx-auto h-10 w-auto" />
<Link href="/" aria-label="Startseite">
<Logo className="mx-auto h-10 w-auto" />
</Link>
<nav className="mt-10 text-center text-sm" aria-label="quick links">
<div className="-my-1 flex flex-col justify-center gap-x-6 sm:flex-row">
<NavLink href="#features">Funktionen</NavLink>
@ -15,9 +18,18 @@ export function Footer() {
</div>
</nav>
</div>
<div className="flex flex-col items-center border-t border-slate-400/10 py-10">
<div className="flex flex-col items-center border-t border-slate-400/10 pt-10">
<p className="mt-6 text-sm text-slate-500 sm:mt-0">NaviLearn</p>
</div>
<nav
className="pb-10 pt-2 text-center text-sm"
aria-label="quick links"
>
<div className="-my-1 flex flex-col justify-center gap-x-6 sm:flex-row">
<NavLink href="/impressum">Impressum</NavLink>
<NavLink href="/datenschutz">Datenschutzerklärung</NavLink>
</div>
</nav>
</Container>
</footer>
)

View File

@ -91,12 +91,12 @@ export function Header() {
<Container>
<nav className="relative z-50 flex justify-between">
<div className="flex items-center md:gap-x-12">
<Link href="#" aria-label="Home">
<Link href="/" aria-label="Startseite">
<Logo className="h-5 w-auto sm:h-10" />
</Link>
<div className="hidden md:flex md:gap-x-6">
<NavLink href="#features">Funktionen</NavLink>
<NavLink href="#pricing">Preise</NavLink>
<NavLink href="/#features">Funktionen</NavLink>
<NavLink href="/#pricing">Preise</NavLink>
</div>
</div>
<div className="flex items-center gap-x-5 md:gap-x-8">

View File

@ -0,0 +1,99 @@
import { ReactNode } from 'react'
import { clsx } from 'clsx'
interface TextProps {
children: ReactNode
className?: string
href?: string
type?: 'p' | 'span'
}
export const Text: React.FC<TextProps> = ({
children,
className = '',
type = 'p',
}) => {
const Component = type === 'p' ? 'p' : 'span'
return (
<Component className={`text-gray-600 ${className}`}>{children}</Component>
)
}
export const BoldText: React.FC<TextProps> = ({ children, className = '' }) => (
<p className={`mt-5 pb-2 text-lg font-bold text-gray-600 ${className}`}>
{children}
</p>
)
export const BaseBoldText: React.FC<TextProps> = ({
children,
className = '',
}) => (
<p className={`mt-5 pb-2 font-bold text-gray-600 ${className}`}>{children}</p>
)
export const Anchor: React.FC<TextProps> = ({
children,
className = '',
href = '',
}) => (
<a
className={`text-gray-600 hover:underline ${className} break-all`}
href={href}
target="_blank"
>
{children}
</a>
)
export const List: React.FC<TextProps> = ({ children, className = '' }) => (
<ul className={`ml-4 list-outside list-disc ${className}`}>{children}</ul>
)
export const ListItem: React.FC<TextProps> = ({ children, className = '' }) => (
<li className={`text-gray-600 ${className}`}>{children}</li>
)
type HeadingProps = {
as?: 'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'
dark?: boolean
} & React.ComponentPropsWithoutRef<
'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'
>
export function Heading({
className,
as: Element = 'h2',
dark = false,
...props
}: HeadingProps) {
return (
<Element
{...props}
data-dark={dark ? 'true' : undefined}
className={clsx(
className,
'text-pretty text-4xl font-medium tracking-tighter text-gray-950 data-[dark]:text-white sm:text-6xl',
)}
/>
)
}
export function Subheading({
className,
as: Element = 'h2',
dark = false,
...props
}: HeadingProps) {
return (
<Element
{...props}
data-dark={dark ? 'true' : undefined}
className={clsx(
className,
'font-mono text-xs/5 font-semibold uppercase tracking-widest text-gray-500 data-[dark]:text-gray-400',
)}
/>
)
}