Add platform settings (Stage 9)

- Settings key-value table in Prisma with migration
- getSettings() / getSetting() helpers in lib/settings.ts
- Admin UI at /admin/settings with 6 sections: General, Notifications,
  Student profile, Legal docs, Curator permissions, Code injection
- saveSettings() server action with admin-only guard
- Maintenance mode: non-admin users redirected to /maintenance page
- schoolName propagated to page metadata and all email templates
- headCode / bodyCode injected into root layout <head> and <body>

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-08 11:18:37 +05:00
parent 093e403f5f
commit e77588deb8
14 changed files with 834 additions and 29 deletions
+23
View File
@@ -0,0 +1,23 @@
export default function MaintenancePage() {
return (
<div
className="min-h-screen flex items-center justify-center p-8"
style={{ backgroundColor: "var(--background)" }}
>
<div className="card-aubade p-10 max-w-md w-full text-center space-y-4">
<p
className="text-xs font-bold uppercase tracking-widest"
style={{ color: "var(--muted-foreground)" }}
>
Технические работы
</p>
<h1 className="text-2xl font-bold" style={{ color: "var(--foreground)" }}>
Скоро вернёмся
</h1>
<p className="text-sm" style={{ color: "var(--muted-foreground)" }}>
Платформа временно недоступна. Мы проводим обновление пожалуйста, зайдите позже.
</p>
</div>
</div>
);
}