Deploy config: - .do/app.yaml: build the Dockerfile directly from GitHub (deploy_on_push) instead of a pre-built DOCR image; NEXT_PUBLIC_* set RUN_AND_BUILD_TIME with the propertymanagement.network domain so they bake into the client bundle; add custom domains block (apex + www); wire Sentry DSN (server + browser). Included pending work from the audit-fixes branch: - AI provider abstraction (OpenAI/Anthropic, admin-selectable; Anthropic default) - Per-landlord e-signature (DocuSign OAuth + Dropbox Sign) + migration 0010 - Outbound webhooks / Zapier integration - PayPal removal (Stripe-only billing) - Storage hardening (fail-loud when Spaces unconfigured), security fixes Verified: full production Docker build (same build-args as DO) passes clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import type { MetadataRoute } from "next"
|
|
|
|
export default function robots(): MetadataRoute.Robots {
|
|
const base = process.env.NEXT_PUBLIC_APP_URL ?? "https://propertymanagement.network"
|
|
|
|
return {
|
|
rules: {
|
|
userAgent: "*",
|
|
allow: "/",
|
|
// Private/app areas. Mirrors PROTECTED_PATHS in proxy.ts, plus the API
|
|
// surface and the token-gated tenant portal (both private but enforced
|
|
// outside the cookie proxy). `/tenant-portal/` keeps the trailing slash so
|
|
// it doesn't also block the indexable `/tenant-portal-info` marketing page.
|
|
disallow: [
|
|
"/dashboard",
|
|
"/admin",
|
|
"/api/",
|
|
"/settings",
|
|
"/onboarding",
|
|
"/team",
|
|
"/tenant-portal/",
|
|
"/calendar",
|
|
"/inspections",
|
|
"/vendors",
|
|
"/reports",
|
|
"/activity",
|
|
"/ai",
|
|
"/ai-dashboard",
|
|
"/predictions",
|
|
"/recommendations",
|
|
"/impact",
|
|
"/follow-ups",
|
|
"/properties",
|
|
"/tenants",
|
|
"/rent",
|
|
"/maintenance",
|
|
"/leases",
|
|
"/expenses",
|
|
],
|
|
},
|
|
sitemap: `${base}/sitemap.xml`,
|
|
host: base,
|
|
}
|
|
}
|