sipher/src/app/layout.tsx
Nixyan 66ebebd105 refactor: modularize plugins with federation and encryption infrastructure
Major changes:
- Restructure plugin architecture: moved federation logic into a dedicated `federation` plugin with Better Auth integration, defining schemas for server registry, key rotation, and blacklist management
- Extract encryption layer: new `oven` plugin handles end-to-end encryption (E2EE) with OLM client/server implementations
- Reorganize social features: consolidated social endpoints (posts, follows, blocks, mutes) and removed legacy plugin patterns in favor of unified plugin structure
- Decentralized key management: refactored `keytools` and `keygen` to support federation key rotation with challenge tokens and health checks

Infrastructure updates:
- Upgrade dependencies: bump Better Auth to 1.6.9, React to 19.2.5, Next.js to 16.2.3, Tailwind to 4.2.4
- Add cryptographic libraries: @scure/bip39, @signalapp/libsignal-client, @matrix-org/matrix-sdk-crypto-wasm for enhanced federation security
- Add utilities: base58-js, uuid for federation identifier handling
- Update database schema with new federation tables (serverRegistry, rotateChallengeTokens, blacklistedServers)

Minor updates: test suite alignment, storage client cleanup, PostFederationSchema refinements

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-05 11:40:14 -03:00

58 lines
No EOL
1.3 KiB
TypeScript

import { TooltipProvider } from "@/components/ui/tooltip";
import type { Metadata } from "next";
import { ThemeProvider } from "next-themes";
import { Bebas_Neue, DM_Sans, Space_Mono } from "next/font/google";
import { Toaster } from "sonner";
import "./globals.css";
const fontSans = DM_Sans({
subsets: ["latin"],
weight: ["300", "400", "500"],
variable: "--font-sans",
});
const fontMono = Space_Mono({
subsets: ["latin"],
weight: ["400", "700"],
style: ["normal", "italic"],
variable: "--font-mono",
});
const fontDisplay = Bebas_Neue({
subsets: ["latin"],
weight: "400",
variable: "--font-display",
});
export const metadata: Metadata = {
title: "Sipher",
description: "A federated social media platform for the modern age.",
icons: {
icon: "/logo/sipher.svg",
},
manifest: "/manifest.json"
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html suppressHydrationWarning>
<body className={`${fontSans.variable} ${fontMono.variable} ${fontDisplay.variable} antialiased`}>
<ThemeProvider
attribute="class"
defaultTheme="dark"
enableSystem
disableTransitionOnChange
>
<TooltipProvider>
<Toaster />
{children}
</TooltipProvider>
</ThemeProvider>
</body>
</html>
);
}