Initial commit: CHORUS PING! blog

- Next.js 14 blog application with theme support
- Docker containerization with volume bindings
- Traefik integration with Let's Encrypt SSL
- MDX support for blog posts
- Theme toggle with localStorage persistence
- Scheduled posts directory structure
- Brand guidelines compliance with CHORUS colors

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
anthonyrawlins
2025-08-27 14:46:26 +10:00
commit 6e13451dc4
63 changed files with 12242 additions and 0 deletions

113
app/layout.tsx Normal file
View File

@@ -0,0 +1,113 @@
import type { Metadata } from 'next'
import { Inter, Exo } from 'next/font/google'
import './globals.css'
const inter = Inter({
subsets: ['latin'],
variable: '--font-inter',
display: 'swap',
})
const exo = Exo({
subsets: ['latin'],
variable: '--font-exo',
display: 'swap',
weight: ['100', '200', '300', '400', '500', '600', '700', '800', '900'],
})
export const metadata: Metadata = {
title: 'CHORUS PING! - Insights on Contextual AI',
description: 'Deep dives into contextual AI orchestration, agent coordination, and the future of intelligent systems.',
keywords: ['contextual AI', 'agent orchestration', 'enterprise AI', 'AI insights', 'technology blog'],
authors: [{ name: 'Anthony Lewis Rawlins', url: 'https://deepblack.cloud' }],
creator: 'Deep Black Cloud',
publisher: 'CHORUS Services',
metadataBase: new URL('https://blog.chorus.services'),
alternates: {
canonical: 'https://blog.chorus.services',
},
openGraph: {
type: 'website',
locale: 'en_US',
url: 'https://blog.chorus.services',
siteName: 'CHORUS PING!',
title: 'CHORUS PING! - Insights on Contextual AI',
description: 'Deep dives into contextual AI orchestration, agent coordination, and the future of intelligent systems.',
images: [
{
url: '/logos/logo-ring-only.png',
width: 256,
height: 256,
alt: 'CHORUS Services Logo',
},
],
},
twitter: {
card: 'summary_large_image',
title: 'CHORUS PING! - Insights on Contextual AI',
description: 'Deep dives into contextual AI orchestration, agent coordination, and the future of intelligent systems.',
images: ['/logos/chorus-landscape-on-blue.png'],
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
'max-video-preview': -1,
'max-image-preview': 'large',
'max-snippet': -1,
},
},
}
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="en">
<head>
{/* Google tag (gtag.js) */}
<script async src="https://www.googletagmanager.com/gtag/js?id=G-WTFF8JL9SF"></script>
<script
dangerouslySetInnerHTML={{
__html: `
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-WTFF8JL9SF');
`,
}}
/>
{/* Theme initialization script */}
<script
dangerouslySetInnerHTML={{
__html: `
(function() {
try {
var theme = localStorage.getItem('theme');
var prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
var shouldBeDark = theme === 'dark' || (!theme && prefersDark);
if (shouldBeDark) {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}
} catch (e) {
// If localStorage is not available, default to dark
document.documentElement.classList.add('dark');
}
})();
`,
}}
/>
</head>
<body className={`${inter.variable} ${exo.variable} font-sans bg-white dark:bg-carbon-950 text-carbon-950 dark:text-carbon-100 transition-colors duration-300`}>
{children}
</body>
</html>
)
}