Workflow-App/Workflow/app/layout.tsx
sjcoetzeesj-coder 11d0178ab1 feat: commit Workflow app source; move CIPC credentials to env
Adds the full Next.js app (app/, components/, lib/, scripts/, assets/,
docs/, Dockerfile, compose, configs) to version control.

Security:
- CIPC BizPortal customer-code logins (Login 1 + Login 3) now read
  CIPC_LOGIN1_CODE / CIPC_LOGIN1_PASSWORD / CIPC_LOGIN3_CODE /
  CIPC_LOGIN3_PASSWORD from .env.local instead of source.
- BizPortal personal login in apply-bizportal route reads
  BIZPORTAL_ID_NO / BIZPORTAL_PASSWORD.
- Added .env.example as the committed template.

.gitignore excludes .env*, node_modules, .next, logs, sqlite, Playwright
storage_state.json (live CIPC cookies), scratch dirs, client PDFs and
debug screenshots.
2026-10-18 15:21:45 +02:00

46 lines
1.3 KiB
TypeScript

// app/layout.tsx
// Root layout for the Workflow frontend. Two responsibilities:
// (1) bind the Inter webfont so the typography tokens render with a
// real face (otherwise the entire app falls back to system-ui).
// (2) wrap children in QueryProvider + NavBar + ToastProvider.
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import "./globals.css";
import Providers from "./providers";
import QueryProvider from "@/components/QueryProvider";
import RouteChrome from "@/components/RouteChrome";
import { ToastProvider } from "@/components/Toast";
const inter = Inter({
subsets: ["latin"],
display: "swap",
variable: "--font-inter"
});
export const metadata: Metadata = {
title: "Workflow · Registry Browser",
description:
"Read-only CIPC registry browser for directors and companies on a self-hosted PocketBase instance.",
robots: { index: false, follow: false }
};
export default function RootLayout({
children
}: {
children: React.ReactNode;
}) {
return (
<html lang="en" className={inter.variable} suppressHydrationWarning>
<body className="bg-bg text-fg">
<Providers>
<QueryProvider>
<RouteChrome>
<ToastProvider>{children}</ToastProvider>
</RouteChrome>
</QueryProvider>
</Providers>
</body>
</html>
);
}