- monorepo: pnpm workspace + go.work + pyproject.toml + commitlint/husky - infra: docker-compose (minimal + full profiles) + init-sql + prometheus - arch-scan: multi-language scanner skeleton (TS/Go/Python/Proto) - shared-proto: buf v2 + classes.proto (ClassService CRUD contract) - api-gateway: Go/Gin + JWT HS256 auth + reverse proxy + request ID - classes: NestJS golden template (error system + observability + middleware + CRUD + tests) - teacher-portal: Next.js + paper-feel UI design system - CI/CD: 4 workflows (go/ts/py/proto) - docs: migration guide + project_rules + coding-standards + git-workflow + ui-design-system + 004 + 9 module READMEs + known-issues + spec/plan migration + roadmap
25 lines
727 B
TypeScript
25 lines
727 B
TypeScript
import './globals.css';
|
|
import type { Metadata } from 'next';
|
|
import { Inter, Fraunces, JetBrains_Mono } from 'next/font/google';
|
|
|
|
const inter = Inter({ subsets: ['latin'], variable: '--font-inter' });
|
|
const fraunces = Fraunces({ subsets: ['latin'], variable: '--font-fraunces' });
|
|
const mono = JetBrains_Mono({ subsets: ['latin'], variable: '--font-mono' });
|
|
|
|
export const metadata: Metadata = {
|
|
title: 'Edu Teacher Portal',
|
|
description: 'K12 智慧教务平台 - 教师端',
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode;
|
|
}) {
|
|
return (
|
|
<html lang="zh-CN" className={`${inter.variable} ${fraunces.variable} ${mono.variable}`}>
|
|
<body>{children}</body>
|
|
</html>
|
|
);
|
|
}
|