Skip to content

Commit 3aa1227

Browse files
authored
Merge pull request #180 from MathisBurger/sentry-and-analytics
Adds Sentry and Plausible analytics with Privacy notice
2 parents 82810e2 + 904ec6d commit 3aa1227

File tree

7 files changed

+155
-3
lines changed

7 files changed

+155
-3
lines changed

web/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,7 @@ yarn-error.log*
3535
*.tsbuildinfo
3636
next-env.d.ts
3737
.idea
38+
.env.sentry-build.plugin
39+
40+
# Sentry Config File
41+
.env.sentry-build-plugin

web/app/global-error.tsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"use client";
2+
3+
import * as Sentry from "@sentry/nextjs";
4+
import NextError from "next/error";
5+
import { useEffect } from "react";
6+
7+
export default function GlobalError({ error }: { error: Error & { digest?: string } }) {
8+
useEffect(() => {
9+
Sentry.captureException(error);
10+
}, [error]);
11+
12+
return (
13+
<html>
14+
<body>
15+
{/* `NextError` is the default Next.js error page component. Its type
16+
definition requires a `statusCode` prop. However, since the App Router
17+
does not expose status codes for errors, we simply pass 0 to render a
18+
generic error message. */}
19+
<NextError statusCode={0} />
20+
</body>
21+
</html>
22+
);
23+
}

web/app/privacy/page.tsx

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,8 +373,73 @@ const PrivacyPage = () => {
373373
Welche Cookies und Dienste auf dieser Website eingesetzt werden,
374374
k&ouml;nnen Sie dieser Datenschutzerkl&auml;rung entnehmen.
375375
</p>
376-
<p>
377-
Quelle: <a href="https://www.e-recht24.de">https://www.e-recht24.de</a>
376+
<h3>Verwendung des Webanalyse-Dienstes Plausible Analytics</h3>
377+
<p>
378+
Diese Website nutzt zur Besucherstatistik den datenschutzfreundlichen
379+
Webanalyse-Dienst Plausible Analytics. Anbieter ist Plausible Insights
380+
OÜ, Tartu, Estland (EU). Die Webanalyse basiert rein auf anonymisierten
381+
Daten und nutzt keine Cookies. Ein Rückschluss auf Personen ist nicht
382+
möglich. Beim Besuch unserer Website werden folgende Daten bei Plausible
383+
Analytics gespeichert: URL der aufgerufenen Seite oder Datei, URL der
384+
Seite über die Sie auf unsere Seite gekommen sind (Referrer), URL eines
385+
ausgehenden Links, den Sie auf unserer Seite geklickt haben (Outbound
386+
Link), Browsertyp und -version, Betriebssystem Ihres Gerätes und der
387+
Gerätetyp. Informationen zu Ihrem Standort (Land, Region und Stadt)
388+
werden näherungsweise aus Ihrer IP-Adresse ermittelt; die IP-Adresse
389+
selbst wird nicht gespeichert. Die Einbindung von Plausible Analytics
390+
erfolgt aufgrund unseres Interesses an einer statistischen Betrachtung
391+
der Nutzung unserer Website. Dies stellt ein berechtigtes Interesse im
392+
Sinne von Art. 6 Abs. 1 lit. f DSGVO dar. Weitere Informationen zum
393+
Umgang mit Nutzerdaten finden Sie in der Datenschutzerklärung von
394+
Plausible Analytics:{" "}
395+
<a href="https://plausible.io/privacy">plausible.io/privacy</a> und
396+
<a href="https://plausible.io/data-policy">plausible.io/data-policy</a>.
397+
</p>
398+
<h3>Fehlerreporting und Monitoring: Sentry</h3>
399+
<p>
400+
Um den fehlerfreien Betrieb unserer Dienste sicherzustellen und beim
401+
Auftreten von Fehlern schnellstmöglich reagieren zu können, nutzen wir
402+
den Dienst Sentry. Über Sentry werden server- oder clientseitig
403+
auftretende Fehler automatisch erfasst und an uns gemeldet. Dabei achten
404+
wir darauf, dass personenbezogene Daten weitmöglich entfernt werden. In
405+
speziellen Fällen ist nicht auszuschließen, dass eine Fehlermeldung auch
406+
personenbezogene Daten enthält, z.B. wenn der Fehler in Zusammenhang mit
407+
einer Nutzereingabe auftritt. Sentry ist ein Dienst der <br />
408+
Functional Software Inc.
409+
<br /> 132 Hawthorne Street <br /> San Francisco <br /> California 94107{" "}
410+
<br /> USA
411+
<br /> (im Folgenden „Sentry”). Die Vereinbarung zur
412+
Auftragsdatenverarbeitung (Data Processing Agreement) von Sentry können
413+
Sie unter folgendem Link nachlesen:{" "}
414+
<a href="https://sentry.io/legal/dpa/">
415+
https://sentry.io/legal/dpa/
416+
</a>{" "}
417+
Die Datenschutzerklärung von Sentry können Sie unter folgendem Link
418+
nachlesen:{" "}
419+
<a href="https://sentry.io/privacy/">https://sentry.io/privacy/</a> Ein
420+
Auftragsdatenverarbeitungsvertrag mit Sentry wurde abgeschlossen. Darin
421+
wird Sentry auch bei einer möglichen Datenverarbeitung in Drittländern
422+
(z.B. durch Wartungsarbeiten) mit Hilfe der EU-Standardvertragsklauseln
423+
zur Einhaltung des EU-Datenschutzniveaus verpflichtet. Die
424+
Datenverarbeitung erfolgt auf Grundlage unseren berechtigten Interessen
425+
(§ 6 Nr. 8 DSG-EKD) an der technisch fehlerfreien und optimierten
426+
Bereitstellung unserer Dienste. Die von Sentry erfassten Fehler werden
427+
in der Google Cloud Platform der Firma <br />
428+
Google LLC <br /> 1600 Amphitheatre Parkway <br /> Mountain View, CA
429+
94043 <br /> USA <br /> (im Folgenden „Google Cloud Platform”)
430+
gespeichert. Die Rechenzentren der Google Cloud Platform sind unter
431+
anderem nach SOC 2 Type II, ISO/IEC 27001 und PCI-DSS zertifiziert. Die
432+
Hinweise zur Datenverarbeitung und Sicherheit (Data Processing and
433+
Security Terms) der Google Cloud Platform können Sie unter folgendem
434+
Link nachlesen:{" "}
435+
<a href="https://cloud.google.com/terms/data-processing-terms">
436+
https://cloud.google.com/terms/data-processing-terms
437+
</a>{" "}
438+
Die Datenschutzerklärung der Google Cloud Platform können Sie unter
439+
folgendem Link nachlesen:
440+
<a href="https://cloud.google.com/terms/cloud-privacy-notice">
441+
https://cloud.google.com/terms/cloud-privacy-notice
442+
</a>
378443
</p>
379444
</Container>
380445
);

web/bun.lockb

88 KB
Binary file not shown.

web/next.config.mjs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,37 @@
1+
import {withSentryConfig} from "@sentry/nextjs";
12
/** @type {import('next').NextConfig} */
23
const nextConfig = {
34
output: "standalone",
45
};
56

6-
export default nextConfig;
7+
export default withSentryConfig(nextConfig, {
8+
// For all available options, see:
9+
// https://www.npmjs.com/package/@sentry/webpack-plugin#options
10+
11+
org: "private-dec",
12+
project: "codecanvas",
13+
14+
// Only print logs for uploading source maps in CI
15+
silent: !process.env.CI,
16+
17+
// For all available options, see:
18+
// https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
19+
20+
// Upload a larger set of source maps for prettier stack traces (increases build time)
21+
widenClientFileUpload: true,
22+
23+
// Uncomment to route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers.
24+
// This can increase your server load as well as your hosting bill.
25+
// Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client-
26+
// side errors will fail.
27+
// tunnelRoute: "/monitoring",
28+
29+
// Automatically tree-shake Sentry logger statements to reduce bundle size
30+
disableLogger: true,
31+
32+
// Enables automatic instrumentation of Vercel Cron Monitors. (Does not yet work with App Router route handlers.)
33+
// See the following for more information:
34+
// https://docs.sentry.io/product/crons/
35+
// https://vercel.com/docs/cron-jobs
36+
automaticVercelMonitors: true,
37+
});

web/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"@mantine/spotlight": "^7",
2424
"@mantine/tiptap": "^7",
2525
"@mantinex/dev-icons": "^1.0.2",
26+
"@sentry/nextjs": "^9",
2627
"@tabler/icons-react": "^3.16.0",
2728
"@tiptap/extension-code-block-lowlight": "^2.8.0",
2829
"@tiptap/extension-color": "^2.8.0",

web/sentry.client.config.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// This file configures the initialization of Sentry on the client.
2+
// The config you add here will be used whenever a users loads a page in their browser.
3+
// https://docs.sentry.io/platforms/javascript/guides/nextjs/
4+
5+
import * as Sentry from "@sentry/nextjs";
6+
7+
Sentry.init({
8+
dsn: "https://68b3b0610345b912b555e01f90dc4834@o4509031950778368.ingest.de.sentry.io/4509031955431504",
9+
10+
// Add optional integrations for additional features
11+
integrations: [
12+
Sentry.replayIntegration(),
13+
],
14+
15+
// Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control.
16+
tracesSampleRate: 1,
17+
18+
// Define how likely Replay events are sampled.
19+
// This sets the sample rate to be 10%. You may want this to be 100% while
20+
// in development and sample at a lower rate in production
21+
replaysSessionSampleRate: 0.1,
22+
23+
// Define how likely Replay events are sampled when an error occurs.
24+
replaysOnErrorSampleRate: 1.0,
25+
26+
// Setting this option to true will print useful information to the console while you're setting up Sentry.
27+
debug: false,
28+
});

0 commit comments

Comments
 (0)