feat: full site build — Project/Melody schema (Option A), admin CRUD, public sections, uploads, email+SMTP, internal analytics, legal pages, docs

This commit is contained in:
2026-08-05 20:53:40 +02:00
parent d87f3033c6
commit c26f41511f
122 changed files with 15068 additions and 41 deletions
+4 -2
View File
@@ -4,7 +4,8 @@ import BottomNav from "@/components/BottomNav";
import SiteFooter from "@/components/SiteFooter";
import SiteHeader from "@/components/SiteHeader";
import { getActiveLocale, getDictionary, getDirection, getEnabledLocales, isLocale, type Locale } from "@/lib/i18n";
import { isComingSoonMode } from "@/lib/site";
import { isSiteClosedMode } from "@/lib/site";
import AnalyticsTracker from "@/components/public/analytics-tracker";
export const dynamicParams = false;
@@ -23,7 +24,7 @@ export default function LocaleLayout({
notFound();
}
if (isComingSoonMode()) {
if (isSiteClosedMode()) {
redirect("/");
}
@@ -33,6 +34,7 @@ export default function LocaleLayout({
return (
<div dir={getDirection(locale)} className="site-shell">
<SiteHeader locale={locale} common={dictionary.common} />
<AnalyticsTracker event="PAGE_VIEW" />
<main className="page-content">{children}</main>
<BottomNav locale={locale} common={dictionary.common} />
<SiteFooter locale={locale} common={dictionary.common} />