Part 2 — Fix links, add redirects, delete strays
A) Add a proper 404 catch-all (Wouter)

File: client/src/App.tsx (or routes root)

--- a/client/src/App.tsx
+++ b/client/src/App.tsx
@@ -320,6 +320,10 @@
   <Switch>
     {/* existing routes... */}
+    {/* catch-all 404 */}
+    <Route>
+      <NotFoundPage />
+    </Route>
   </Switch>


File: client/src/pages/NotFoundPage.tsx

export default function NotFoundPage() {
  return (
    <div className="mx-auto max-w-3xl p-8 text-center">
      <h1 className="text-2xl font-semibold mb-2">Page not found</h1>
      <p className="text-gray-600 mb-6">The link you followed may be broken or the page may have been removed.</p>
      <div className="flex gap-2 justify-center">
        <a className="btn btn-primary" href="/dashboard">Go to Dashboard</a>
        <a className="btn btn-outline" href="/">Back to Home</a>
      </div>
    </div>
  );
}

B) Hard redirects for known legacy/stray URLs

Create a tiny redirect component and map:

File: client/src/components/Redirect.tsx

import { useEffect } from "react";
import { useLocation } from "wouter";
export default function Redirect({ to }: { to: string }) {
  const [, nav] = useLocation();
  useEffect(() => { nav(to, { replace: true }); }, [to]);
  return null;
}


In App.tsx (near pricing routes):

+ import Redirect from "@/components/Redirect";
@@
- <Route path="/pricing/business-assets" component={PricingBusinessAssets} />
+ <Route path="/pricing/business-assets"><Redirect to="/pricing" /></Route>
+ <Route path="/pricing/assets"><Redirect to="/pricing" /></Route>
+ <Route path="/pricing/:catchall"><Redirect to="/pricing" /></Route>

C) Remove stray routes & pages

Delete /pricing/business-assets component and any orphaned pricing pages not used.

Search & remove references:

Navbar/MobileMenu dropdown item “Business Assets” → remove.

Any links pointing to deleted pricing pages → update to /pricing.

D) Fix broken links from the audit

For each entry in link-report.json -> brokenByUrl, do one of:

Update the link to the correct path.

Add a redirect to the intended page (e.g., old /logo-templates → /business-assets/logo-templates).

Remove the link if obsolete.

Re-run npm run link:audit until ❌ Broken/404: 0.

Acceptance Criteria

npm run link:audit prints a summary and writes link-report.json.

Visiting /pricing/business-assets (and any other legacy pricing paths) redirects to /pricing.

A friendly Not Found page renders for unknown routes.

Navbar/MobileMenu pricing dropdown no longer lists “Business Assets”.

Re-run audit shows 0 broken links (or the report lists only externally unreachable URLs we intentionally ignore).