Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions web/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,7 @@ yarn-error.log*
*.tsbuildinfo
next-env.d.ts
.idea
.env.sentry-build.plugin

# Sentry Config File
.env.sentry-build-plugin
23 changes: 23 additions & 0 deletions web/app/global-error.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
"use client";

import * as Sentry from "@sentry/nextjs";
import NextError from "next/error";
import { useEffect } from "react";

export default function GlobalError({ error }: { error: Error & { digest?: string } }) {
useEffect(() => {
Sentry.captureException(error);
}, [error]);

return (
<html>
<body>
{/* `NextError` is the default Next.js error page component. Its type
definition requires a `statusCode` prop. However, since the App Router
does not expose status codes for errors, we simply pass 0 to render a
generic error message. */}
<NextError statusCode={0} />
</body>
</html>
);
}
69 changes: 67 additions & 2 deletions web/app/privacy/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -373,8 +373,73 @@ const PrivacyPage = () => {
Welche Cookies und Dienste auf dieser Website eingesetzt werden,
k&ouml;nnen Sie dieser Datenschutzerkl&auml;rung entnehmen.
</p>
<p>
Quelle: <a href="https://www.e-recht24.de">https://www.e-recht24.de</a>
<h3>Verwendung des Webanalyse-Dienstes Plausible Analytics</h3>
<p>
Diese Website nutzt zur Besucherstatistik den datenschutzfreundlichen
Webanalyse-Dienst Plausible Analytics. Anbieter ist Plausible Insights
OÜ, Tartu, Estland (EU). Die Webanalyse basiert rein auf anonymisierten
Daten und nutzt keine Cookies. Ein Rückschluss auf Personen ist nicht
möglich. Beim Besuch unserer Website werden folgende Daten bei Plausible
Analytics gespeichert: URL der aufgerufenen Seite oder Datei, URL der
Seite über die Sie auf unsere Seite gekommen sind (Referrer), URL eines
ausgehenden Links, den Sie auf unserer Seite geklickt haben (Outbound
Link), Browsertyp und -version, Betriebssystem Ihres Gerätes und der
Gerätetyp. Informationen zu Ihrem Standort (Land, Region und Stadt)
werden näherungsweise aus Ihrer IP-Adresse ermittelt; die IP-Adresse
selbst wird nicht gespeichert. Die Einbindung von Plausible Analytics
erfolgt aufgrund unseres Interesses an einer statistischen Betrachtung
der Nutzung unserer Website. Dies stellt ein berechtigtes Interesse im
Sinne von Art. 6 Abs. 1 lit. f DSGVO dar. Weitere Informationen zum
Umgang mit Nutzerdaten finden Sie in der Datenschutzerklärung von
Plausible Analytics:{" "}
<a href="https://plausible.io/privacy">plausible.io/privacy</a> und
<a href="https://plausible.io/data-policy">plausible.io/data-policy</a>.
</p>
<h3>Fehlerreporting und Monitoring: Sentry</h3>
<p>
Um den fehlerfreien Betrieb unserer Dienste sicherzustellen und beim
Auftreten von Fehlern schnellstmöglich reagieren zu können, nutzen wir
den Dienst Sentry. Über Sentry werden server- oder clientseitig
auftretende Fehler automatisch erfasst und an uns gemeldet. Dabei achten
wir darauf, dass personenbezogene Daten weitmöglich entfernt werden. In
speziellen Fällen ist nicht auszuschließen, dass eine Fehlermeldung auch
personenbezogene Daten enthält, z.B. wenn der Fehler in Zusammenhang mit
einer Nutzereingabe auftritt. Sentry ist ein Dienst der <br />
Functional Software Inc.
<br /> 132 Hawthorne Street <br /> San Francisco <br /> California 94107{" "}
<br /> USA
<br /> (im Folgenden „Sentry”). Die Vereinbarung zur
Auftragsdatenverarbeitung (Data Processing Agreement) von Sentry können
Sie unter folgendem Link nachlesen:{" "}
<a href="https://sentry.io/legal/dpa/">
https://sentry.io/legal/dpa/
</a>{" "}
Die Datenschutzerklärung von Sentry können Sie unter folgendem Link
nachlesen:{" "}
<a href="https://sentry.io/privacy/">https://sentry.io/privacy/</a> Ein
Auftragsdatenverarbeitungsvertrag mit Sentry wurde abgeschlossen. Darin
wird Sentry auch bei einer möglichen Datenverarbeitung in Drittländern
(z.B. durch Wartungsarbeiten) mit Hilfe der EU-Standardvertragsklauseln
zur Einhaltung des EU-Datenschutzniveaus verpflichtet. Die
Datenverarbeitung erfolgt auf Grundlage unseren berechtigten Interessen
(§ 6 Nr. 8 DSG-EKD) an der technisch fehlerfreien und optimierten
Bereitstellung unserer Dienste. Die von Sentry erfassten Fehler werden
in der Google Cloud Platform der Firma <br />
Google LLC <br /> 1600 Amphitheatre Parkway <br /> Mountain View, CA
94043 <br /> USA <br /> (im Folgenden „Google Cloud Platform”)
gespeichert. Die Rechenzentren der Google Cloud Platform sind unter
anderem nach SOC 2 Type II, ISO/IEC 27001 und PCI-DSS zertifiziert. Die
Hinweise zur Datenverarbeitung und Sicherheit (Data Processing and
Security Terms) der Google Cloud Platform können Sie unter folgendem
Link nachlesen:{" "}
<a href="https://cloud.google.com/terms/data-processing-terms">
https://cloud.google.com/terms/data-processing-terms
</a>{" "}
Die Datenschutzerklärung der Google Cloud Platform können Sie unter
folgendem Link nachlesen:
<a href="https://cloud.google.com/terms/cloud-privacy-notice">
https://cloud.google.com/terms/cloud-privacy-notice
</a>
</p>
</Container>
);
Expand Down
Binary file modified web/bun.lockb
Binary file not shown.
33 changes: 32 additions & 1 deletion web/next.config.mjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,37 @@
import {withSentryConfig} from "@sentry/nextjs";
/** @type {import('next').NextConfig} */
const nextConfig = {
output: "standalone",
};

export default nextConfig;
export default withSentryConfig(nextConfig, {
// For all available options, see:
// https://www.npmjs.com/package/@sentry/webpack-plugin#options

org: "private-dec",
project: "codecanvas",

// Only print logs for uploading source maps in CI
silent: !process.env.CI,

// For all available options, see:
// https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/

// Upload a larger set of source maps for prettier stack traces (increases build time)
widenClientFileUpload: true,

// Uncomment to route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers.
// This can increase your server load as well as your hosting bill.
// Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client-
// side errors will fail.
// tunnelRoute: "/monitoring",

// Automatically tree-shake Sentry logger statements to reduce bundle size
disableLogger: true,

// Enables automatic instrumentation of Vercel Cron Monitors. (Does not yet work with App Router route handlers.)
// See the following for more information:
// https://docs.sentry.io/product/crons/
// https://vercel.com/docs/cron-jobs
automaticVercelMonitors: true,
});
1 change: 1 addition & 0 deletions web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"@mantine/spotlight": "^7",
"@mantine/tiptap": "^7",
"@mantinex/dev-icons": "^1.0.2",
"@sentry/nextjs": "^9",
"@tabler/icons-react": "^3.16.0",
"@tiptap/extension-code-block-lowlight": "^2.8.0",
"@tiptap/extension-color": "^2.8.0",
Expand Down
28 changes: 28 additions & 0 deletions web/sentry.client.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// This file configures the initialization of Sentry on the client.
// The config you add here will be used whenever a users loads a page in their browser.
// https://docs.sentry.io/platforms/javascript/guides/nextjs/

import * as Sentry from "@sentry/nextjs";

Sentry.init({
dsn: "https://68b3b0610345b912b555e01f90dc4834@o4509031950778368.ingest.de.sentry.io/4509031955431504",

// Add optional integrations for additional features
integrations: [
Sentry.replayIntegration(),
],

// Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control.
tracesSampleRate: 1,

// Define how likely Replay events are sampled.
// This sets the sample rate to be 10%. You may want this to be 100% while
// in development and sample at a lower rate in production
replaysSessionSampleRate: 0.1,

// Define how likely Replay events are sampled when an error occurs.
replaysOnErrorSampleRate: 1.0,

// Setting this option to true will print useful information to the console while you're setting up Sentry.
debug: false,
});
Loading