From 75a45fa4f3ffea89c43cdacff3e6aaaf8573c31d Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Thu, 30 Apr 2026 15:05:45 +0000 Subject: [PATCH 1/6] chore: codebase cleanup, perf optimization & BuiltWith/Wappalyzer tech integrations - Remove Zustand badge from 'Our Edge' stack display (dep was already removed) - Remove stray console.warn in audit competitor-scan catch block - Clean up outdated Firebase/Firestore references in lighthouse2.md - Add manifest.webmanifest for PWA detection on BuiltWith/Wappalyzer - Add JSON-LD structured data (Organization, LocalBusiness, WebSite) - Dynamic-import jspdf via buildAuditPdf (lazy-load on PDF download) - Move googleapis + jspdf deps to packages/shared where they belong Co-Authored-By: Anthony Jones --- STATUS.md | 11 ++++ apps/api/src/routes/audit.ts | 4 +- apps/web/package.json | 2 - apps/web/public/manifest.webmanifest | 26 +++++++++ apps/web/src/app/layout.tsx | 5 ++ apps/web/src/components/JsonLd.tsx | 57 +++++++++++++++++++ .../components/marketing/EnrichedPages.tsx | 1 - .../lighthouse/components/AuditResults.tsx | 2 +- bun.lock | 6 +- lighthouse2.md | 4 +- packages/shared/package.json | 2 + 11 files changed, 108 insertions(+), 12 deletions(-) create mode 100644 apps/web/public/manifest.webmanifest create mode 100644 apps/web/src/components/JsonLd.tsx diff --git a/STATUS.md b/STATUS.md index 9e566c22..4d09cb5a 100644 --- a/STATUS.md +++ b/STATUS.md @@ -2,6 +2,17 @@ > **Note:** This file tracks migration and release notes for the **Turborepo Cloudflare** app (`apps/web` Next.js Pages + `apps/api` Elysia Worker, `bun`, `bun.lock`). Older single-app / Astro-era detail is archived below for context — see [README.md](README.md) and [AGENTS.md](AGENTS.md). +## Codebase cleanup, perf optimization & tech integrations (2026-04-30) + +- Removed Zustand badge from the "Our Edge" stack display — dependency was previously removed but badge remained. +- Removed stray `console.warn` in the competitor-scan catch block of `apps/api/src/routes/audit.ts`. +- Cleaned up outdated Firebase/Firestore references in `lighthouse2.md` (now reflects Cloudflare Pages/Workers + KV/D1). +- Added `manifest.webmanifest` to `apps/web/public/` with PWA metadata — triggers PWA detection on Wappalyzer/BuiltWith. +- Added JSON-LD structured data (`Organization`, `LocalBusiness`, `WebSite`) in root layout — zero render cost, boosts SEO. +- Dynamic-imported `jspdf` (via `buildAuditPdf`) in `AuditResults.tsx` so the heavy PDF library is only loaded when the user clicks "Download PDF", not on initial page load. +- Moved `googleapis` and `jspdf` dependencies from `apps/web` to `packages/shared` where they are actually consumed, preventing accidental client-bundle inclusion. +- Verification: `bun run lint`, `bun run build` pass from the repo root. + ## Micro SaaS store /tools page build-out (2026-04-30) - Replaced the "Coming Soon" waitlist on `/tools` with a full product catalog showcasing 6 Stripe-backed micro-SaaS products: SiteScan, ReviewPilot, ClientHub, LocalRank, TestiFlow, and ContentMill. diff --git a/apps/api/src/routes/audit.ts b/apps/api/src/routes/audit.ts index a7d5742a..6d36c1c4 100644 --- a/apps/api/src/routes/audit.ts +++ b/apps/api/src/routes/audit.ts @@ -282,8 +282,8 @@ export const auditRoute = new Elysia({ aot: false }).post( placesData.primaryType, 3, ); - } catch (compErr) { - console.warn("Competitor scan failed:", compErr); + } catch { + /* competitor scan is best-effort — swallow errors silently */ } const categories = lighthouse.categories; diff --git a/apps/web/package.json b/apps/web/package.json index 38d51246..af15ff0b 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -56,9 +56,7 @@ "@google/genai": "^1.48.0", "cheerio": "^1.2.0", "framer-motion": "^12.38.0", - "googleapis": "^171.4.0", "gsap": "^3.15.0", - "jspdf": "^4.2.1", "next": "16.2.4", "react": "19.2.5", "react-dom": "19.2.5", diff --git a/apps/web/public/manifest.webmanifest b/apps/web/public/manifest.webmanifest new file mode 100644 index 00000000..7d240ebe --- /dev/null +++ b/apps/web/public/manifest.webmanifest @@ -0,0 +1,26 @@ +{ + "name": "Designed by Anthony", + "short_name": "DBA", + "description": "Custom web design and local SEO for service businesses in the Mohawk Valley and Central New York.", + "start_url": "/", + "display": "standalone", + "background_color": "#0f1218", + "theme_color": "#0f1218", + "icons": [ + { + "src": "/site-icon-48.png", + "sizes": "48x48", + "type": "image/png" + }, + { + "src": "/site-icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/site-icon-512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index 02f4bd84..76dbd286 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -1,5 +1,6 @@ import "@/design-system/dba-global.css"; import { CrispBootstrap } from "@/components/CrispBootstrap"; +import { JsonLd } from "@/components/JsonLd"; import "@/styles/layout-shell.css"; import type { Metadata, Viewport } from "next"; import type { ReactNode } from "react"; @@ -25,6 +26,7 @@ export const metadata: Metadata = { }, description: "Custom web design and local SEO for service businesses in the Mohawk Valley and Central New York.", + manifest: "/manifest.webmanifest", appleWebApp: { capable: true, statusBarStyle: "black-translucent", @@ -77,6 +79,9 @@ export default function RootLayout({ children }: { children: ReactNode }) { data-scroll-behavior="smooth" data-lead-webhook={leadWebhookDefault || undefined} > + + + {/* Google Tag Manager (noscript) */}