mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 20:29:06 +00:00
* docker-compose for production frontend * fix: Remove external Redis port mapping for Coolify compatibility Redis should only be accessible within the internal Docker network in Coolify deployments to avoid port conflicts with other applications. * fix: Remove external port mapping for web service in Coolify Coolify handles port exposure through its proxy (Traefik), so services should not expose ports directly in the docker-compose file. * server side client envs * missing vars * nextjs experimental * fix claude 'fix' * remove build env vars compose * docker * remove ports for coolify * review * cleanup --------- Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com>
92 lines
3.0 KiB
TypeScript
92 lines
3.0 KiB
TypeScript
import "./styles/globals.scss";
|
||
import { Metadata, Viewport } from "next";
|
||
import { Poppins } from "next/font/google";
|
||
import { ErrorProvider } from "./(errors)/errorContext";
|
||
import ErrorMessage from "./(errors)/errorMessage";
|
||
import { RecordingConsentProvider } from "./recordingConsentContext";
|
||
import { ErrorBoundary } from "@sentry/nextjs";
|
||
import { Providers } from "./providers";
|
||
import { getNextEnvVar } from "./lib/nextBuild";
|
||
import { getClientEnv } from "./lib/clientEnv";
|
||
|
||
export const dynamic = "force-dynamic";
|
||
|
||
const poppins = Poppins({
|
||
subsets: ["latin"],
|
||
weight: ["200", "400", "600"],
|
||
display: "swap",
|
||
});
|
||
|
||
export const viewport: Viewport = {
|
||
themeColor: "black",
|
||
width: "device-width",
|
||
initialScale: 1,
|
||
maximumScale: 1,
|
||
};
|
||
|
||
const SITE_URL = getNextEnvVar("SITE_URL");
|
||
const env = getClientEnv();
|
||
|
||
export const metadata: Metadata = {
|
||
metadataBase: new URL(SITE_URL),
|
||
title: {
|
||
template: "%s – Reflector",
|
||
default: "Reflector - AI-Powered Meeting Transcriptions by Monadical",
|
||
},
|
||
description:
|
||
"Reflector is an AI-powered tool that transcribes your meetings with unparalleled accuracy, divides content by topics, and provides insightful summaries. Maximize your productivity with Reflector, brought to you by Monadical. Capture the signal, not the noise",
|
||
applicationName: "Reflector",
|
||
referrer: "origin-when-cross-origin",
|
||
keywords: ["Reflector", "Monadical", "AI", "Meetings", "Transcription"],
|
||
authors: [{ name: "Monadical Team", url: "https://monadical.com/team.html" }],
|
||
formatDetection: {
|
||
email: false,
|
||
address: false,
|
||
telephone: false,
|
||
},
|
||
|
||
openGraph: {
|
||
title: "Reflector",
|
||
description:
|
||
"Reflector is an AI-powered tool that transcribes your meetings with unparalleled accuracy, divides content by topics, and provides insightful summaries. Maximize your productivity with Reflector, brought to you by Monadical. Capture the signal, not the noise.",
|
||
type: "website",
|
||
},
|
||
|
||
twitter: {
|
||
card: "summary_large_image",
|
||
title: "Reflector",
|
||
description:
|
||
"Reflector is an AI-powered tool that transcribes your meetings with unparalleled accuracy, divides content by topics, and provides insightful summaries. Maximize your productivity with Reflector, brought to you by Monadical. Capture the signal, not the noise.",
|
||
images: ["/r-icon.png"],
|
||
},
|
||
|
||
icons: {
|
||
icon: "/r-icon.png",
|
||
shortcut: "/r-icon.png",
|
||
apple: "/r-icon.png",
|
||
},
|
||
robots: { index: false, follow: false, noarchive: true, noimageindex: true },
|
||
};
|
||
|
||
export default async function RootLayout({
|
||
children,
|
||
}: {
|
||
children: React.ReactNode;
|
||
}) {
|
||
return (
|
||
<html lang="en" className={poppins.className} suppressHydrationWarning>
|
||
<body
|
||
className={"h-[100svh] w-[100svw] overflow-x-hidden relative"}
|
||
data-env={JSON.stringify(env)}
|
||
>
|
||
<ErrorBoundary fallback={<p>"something went really wrong"</p>}>
|
||
<ErrorProvider>
|
||
<ErrorMessage />
|
||
<Providers>{children}</Providers>
|
||
</ErrorProvider>
|
||
</ErrorBoundary>
|
||
</body>
|
||
</html>
|
||
);
|
||
}
|