Consolidate audit-fixes branch: webhooks, integrations, and deploy hardening

Batch commit of the pending working tree on security/audit-fixes-2026-07.
Major areas:
- Outbound webhooks / Zapier: schema + signed delivery with retries, public
  v1 API (REST-hook subscribe/unsubscribe), settings UI, cron drain.
- Deploy hardening: email via SMTP2GO (Resend fully removed), verified DB TLS
  (DATABASE_SSL=require + DATABASE_CA), storage fails loud in production when
  Spaces is unconfigured instead of silently using ephemeral disk.
- Integrations & features (concurrent work): accounting (QuickBooks/Xero),
  e-signature (DocuSign/Dropbox Sign), PayPal, geocoding/maps, onboarding,
  expanded legal pages.
- DB migrations 0006–0009.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Leon Serfaty
2026-07-02 13:42:34 -04:00
co-authored by Claude Opus 4.8
parent 969d5d4c8a
commit c9968531e4
282 changed files with 41530 additions and 4013 deletions
+32 -3
View File
@@ -1,6 +1,7 @@
import type { Metadata } from "next"
import { Geist, Geist_Mono } from "next/font/google"
import { Toaster } from "sonner"
import { Toaster } from "@/components/ui/toaster"
import { UmamiAnalytics } from "@/components/analytics/umami"
import "./globals.css"
const geistSans = Geist({
@@ -14,6 +15,8 @@ const geistMono = Geist_Mono({
})
export const metadata: Metadata = {
metadataBase: new URL(process.env.NEXT_PUBLIC_APP_URL ?? "https://propertymanagement.network"),
applicationName: "Property Management Network",
title: {
default: "Property Management Network — Built for Independent Landlords",
template: "%s | Property Management Network",
@@ -25,7 +28,32 @@ export const metadata: Metadata = {
title: "Property Management Network — Built for Independent Landlords",
description: "One dashboard to manage all your rental properties.",
type: "website",
url: process.env.NEXT_PUBLIC_APP_URL,
url: "/",
siteName: "Property Management Network",
locale: "en_US",
},
twitter: {
card: "summary_large_image",
title: "Property Management Network — Built for Independent Landlords",
description: "One dashboard to manage all your rental properties.",
creator: "@propertymgmtnet",
site: "@propertymgmtnet",
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
"max-image-preview": "large",
"max-snippet": -1,
"max-video-preview": -1,
},
},
verification: {
// Set GOOGLE_SITE_VERIFICATION in the environment to emit the
// <meta name="google-site-verification"> tag. Left undefined => tag omitted.
google: process.env.GOOGLE_SITE_VERIFICATION,
},
}
@@ -41,7 +69,8 @@ export default function RootLayout({
>
<body suppressHydrationWarning className="min-h-full flex flex-col bg-[#09090b] text-white">
{children}
<Toaster position="bottom-right" theme="dark" richColors />
<Toaster />
<UmamiAnalytics />
</body>
</html>
)