feat(sprint-6): Phase 6 — Notifications (WebSocket) + PWA
Deploy to Production / test (push) Has been cancelled
Deploy to Production / deploy (push) Has been cancelled

- 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:
Patrick Plate
2026-06-12 23:02:44 +02:00
parent 076fd6f9b3
commit 599514c0db
39 changed files with 6684 additions and 3217 deletions
+11
View File
@@ -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>