feat(sprint-6): Phase 6 — Notifications (WebSocket) + PWA
- WebSocket: Spring STOMP + SockJS, NotificationService, persistent notifications table - NotificationController: GET/PUT endpoints for notification management - Frontend: notification bell with unread badge, dropdown panel, real-time via STOMP - PWA: manifest.json, service worker (manual sw.js), offline page, install prompt - PWA icons (192+512), dark theme colors, standalone display - Full i18n (de/en) for notifications and PWA - Flyway V10 migration for notifications table - spring-boot-starter-websocket dependency added
This commit is contained in:
@@ -11,6 +11,8 @@ import type { ReactNode } from "react"
|
||||
|
||||
import { Toaster as Sonner } from "@/components/ui/sonner"
|
||||
import { Toaster } from "@/components/ui/toaster"
|
||||
import { PwaInstallPrompt } from "@/components/pwa-install-prompt"
|
||||
import { ServiceWorkerRegistration as SwRegistration } from "@/components/sw-registration"
|
||||
|
||||
// Define metadata for the application
|
||||
// More info: https://nextjs.org/docs/app/building-your-application/optimizing/metadata
|
||||
@@ -21,6 +23,13 @@ export const metadata: Metadata = {
|
||||
},
|
||||
description: "Cannabis club management platform — CannaManage",
|
||||
metadataBase: new URL(process.env.BASE_URL as string),
|
||||
manifest: "/manifest.json",
|
||||
themeColor: "#2ECC71",
|
||||
appleWebApp: {
|
||||
capable: true,
|
||||
statusBarStyle: "default",
|
||||
title: "CannaManage",
|
||||
},
|
||||
}
|
||||
|
||||
// Define fonts for the application
|
||||
@@ -55,6 +64,8 @@ export default function RootLayout(props: { children: ReactNode }) {
|
||||
{children}
|
||||
<Toaster />
|
||||
<Sonner />
|
||||
<SwRegistration />
|
||||
<PwaInstallPrompt />
|
||||
</Providers>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user