Every Workforge tool now lives at a stable canonical URL under workforge.cambareri.net with a full SEO wrapper: metadata, JSON-LD SoftwareApplication + BreadcrumbList + FAQPage blocks, a TrustBar with our five privacy signals, related tools rail, and the actual working tool mounted below the hero.
What changed:
- 22 marketing wrapper pages moved from placeholder
<div data-tool-mount>to real tool components. - Every tool package (
@repo/pdf-merge,@repo/bg-remover, and the rest) is now a workspace dependency of the marketing app. ToolPagecomponent gained an optionaltoolComponentprop; wrapper pages pass the actual React component in.
What was hard: the production build hung indefinitely under Turbopack because the WASM packages (jSquash, libheif, ONNX runtime) do not play nicely with Turbopack's production tracer. Fix: switched marketing's next build to Webpack. Dev still uses Turbopack for HMR speed. Diagnosed via single-tool bisect against Vercel.
Result: all 22 tools are now discoverable, indexable, and reachable from a single domain. Old subdomain URLs continue to serve; they will redirect to canonical URLs on Joe's per-tool schedule.