Documentation
SEO AUDIT REPORT
SEO Audit Report - console.svc.plus
SEO Audit Report - console.svc.plus
Date: 2026-01-29
Audited By: Antigravity AI
Scope: SEO optimization without changing functionality
📊 Summary of Issues
Based on Google Search Console data:
- 404 Errors: 804 pages
- Duplicate Pages: 299 instances
- Redirect Issues: 8 instances
- 5xx Errors: 6 instances
- Soft 404: 3 instances
- Missing noindex: 1 instance
- robots.txt Blocked: 1 instance
- 401 Errors: 1 instance
- Missing Index: 235 instances
🔴 Critical Issues
1. Dead Links (404 Errors) - 804 Pages
Problem: Numerous href="#" placeholders throughout the codebase
Affected Files:
src/app/page.tsx(line 259)src/components/Header.tsx(lines 22, 25, 28)src/components/DownloadSection.tsx(line 68)src/app/(auth)/login/LoginContent.tsx(line 299)src/app/(auth)/login/LoginForm.tsx(line 303)
Impact:
- Poor user experience
- Negative SEO ranking
- Crawl budget waste
Fix Priority: 🔴 HIGH
2. Missing not-found.tsx
Problem: No custom 404 page at app root level
Current State:
- Has
/404/page.tsxbut notnot-found.tsx - Next.js 13+ App Router requires
not-found.tsxfor proper 404 handling
Impact:
- Improper 404 handling
- Missing SEO metadata on 404 pages
Fix Priority: 🔴 HIGH
3. Incomplete SEO Metadata
Problem: Root layout missing essential SEO tags
Current State (src/app/layout.tsx):
export const metadata = {
title: 'Cloud-Neutral',
description: 'Unified tools for your cloud native stack',
}
Missing:
- Open Graph tags
- Twitter Card tags
- Canonical URLs
- Viewport meta tag
- Theme color
- Robots meta tag
Fix Priority: 🟡 MEDIUM
4. Anchor Links Without Proper Targets
Problem: Hash links (#features, #docs, etc.) without corresponding IDs
Affected Files:
src/app/[slug]/Client.tsx(lines 146-161)src/components/marketing/ProductScenarios.tsx(lines 57, 71)src/components/marketing/ProductDownload.tsx(line 88)
Impact:
- Broken in-page navigation
- Poor user experience
- Potential crawl errors
Fix Priority: 🟡 MEDIUM
5. robots.txt Configuration Issues
Problem: Conflicting rules in robots.txt
Current State:
User-agent: Googlebot
Allow: /
Allow: /_next/static/
Allow: /_next/image
Disallow: /admin/
Disallow: /api/
Disallow: /internal/
Disallow: /_next/ # ⚠️ Conflicts with Allow above
Fix Priority: 🟡 MEDIUM
6. Missing Structured Data
Problem: No JSON-LD structured data for rich snippets
Missing:
- Organization schema
- WebSite schema
- BreadcrumbList schema
- Article schema (for blog posts)
Fix Priority: 🟢 LOW
🛠️ Recommended Fixes
Fix 1: Replace All href="#" Links
Action: Replace placeholder links with actual URLs or remove them
// ❌ Before
<a href="#">Learn more</a>
// ✅ After (Option 1: Real link)
<Link href="/docs/getting-started">Learn more</Link>
// ✅ After (Option 2: Button if not navigating)
<button onClick={handleAction}>Learn more</button>
// ✅ After (Option 3: Disabled state)
<span className="text-muted cursor-not-allowed">Coming soon</span>
Files to Update:
src/app/page.tsxsrc/components/Header.tsxsrc/components/DownloadSection.tsxsrc/app/(auth)/login/LoginContent.tsxsrc/app/(auth)/login/LoginForm.tsx
Fix 2: Add not-found.tsx
Action: Create proper 404 handler
File: src/app/not-found.tsx
import type { Metadata } from 'next'
import Link from 'next/link'
export const metadata: Metadata = {
title: '404 - Page Not Found | Cloud-Neutral',
description: 'The page you are looking for does not exist.',
robots: {
index: false,
follow: false,
},
}
export default function NotFound() {
return (
<main className="flex min-h-screen flex-col items-center justify-center bg-background px-4 py-24 text-center">
<p className="text-sm font-semibold uppercase tracking-wide text-primary">404</p>
<h1 className="mt-4 text-4xl font-bold text-heading">Page not found</h1>
<p className="mt-3 max-w-md text-sm text-text-muted">
The page you were looking for could not be found. Please return to the homepage.
</p>
<Link
href="/"
className="mt-6 inline-flex items-center rounded-full bg-primary px-5 py-2 text-sm font-semibold text-white shadow hover:bg-primary-hover"
>
Back to homepage
</Link>
</main>
)
}
Fix 3: Enhanced SEO Metadata
Action: Update root layout with comprehensive metadata
File: src/app/layout.tsx
import type { Metadata } from 'next'
export const metadata: Metadata = {
metadataBase: new URL('https://console.svc.plus'),
title: {
default: 'Cloud-Neutral | Unified Cloud Native Tools',
template: '%s | Cloud-Neutral',
},
description: 'Unified tools for your cloud native stack. Manage infrastructure, deployments, and services across multiple cloud providers.',
keywords: ['cloud native', 'kubernetes', 'infrastructure', 'devops', 'cloud management'],
authors: [{ name: 'Cloud-Neutral Team' }],
creator: 'Cloud-Neutral',
publisher: 'Cloud-Neutral',
formatDetection: {
email: false,
address: false,
telephone: false,
},
openGraph: {
type: 'website',
locale: 'en_US',
url: 'https://console.svc.plus',
title: 'Cloud-Neutral | Unified Cloud Native Tools',
description: 'Unified tools for your cloud native stack',
siteName: 'Cloud-Neutral',
images: [
{
url: '/og-image.png',
width: 1200,
height: 630,
alt: 'Cloud-Neutral Platform',
},
],
},
twitter: {
card: 'summary_large_image',
title: 'Cloud-Neutral | Unified Cloud Native Tools',
description: 'Unified tools for your cloud native stack',
images: ['/og-image.png'],
creator: '@cloudneutral',
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
'max-video-preview': -1,
'max-image-preview': 'large',
'max-snippet': -1,
},
},
verification: {
google: 'your-google-verification-code',
},
}
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#6366f1" />
<link rel="canonical" href="https://console.svc.plus" />
{/* ... rest of head */}
</head>
{/* ... rest of layout */}
</html>
)
}
Fix 4: Add Section IDs for Anchor Links
Action: Add proper id attributes to sections
File: src/app/[slug]/Client.tsx
// Add IDs to sections
<section id="features">
{/* Features content */}
</section>
<section id="editions">
{/* Editions content */}
</section>
<section id="scenarios">
{/* Scenarios content */}
</section>
<section id="download">
{/* Download content */}
</section>
<section id="docs">
{/* Docs content */}
</section>
<section id="faq">
{/* FAQ content */}
</section>
Fix 5: Clean Up robots.txt
Action: Remove conflicting rules
File: public/robots.txt
User-agent: Googlebot
Allow: /
Allow: /_next/static/
Allow: /_next/image
Disallow: /admin/
Disallow: /api/
Disallow: /internal/
User-agent: *
Allow: /
Allow: /_next/static/
Allow: /_next/image
Disallow: /admin/
Disallow: /api/
Disallow: /internal/
Sitemap: https://console.svc.plus/sitemap.xml
Fix 6: Add Structured Data
Action: Add JSON-LD schemas
File: src/app/layout.tsx
export default function RootLayout({ children }: { children: React.ReactNode }) {
const organizationSchema = {
'@context': 'https://schema.org',
'@type': 'Organization',
name: 'Cloud-Neutral',
url: 'https://console.svc.plus',
logo: 'https://console.svc.plus/logo.png',
sameAs: [
'https://twitter.com/cloudneutral',
'https://github.com/cloud-neutral-toolkit',
],
}
const websiteSchema = {
'@context': 'https://schema.org',
'@type': 'WebSite',
name: 'Cloud-Neutral',
url: 'https://console.svc.plus',
potentialAction: {
'@type': 'SearchAction',
target: 'https://console.svc.plus/search?q={search_term_string}',
'query-input': 'required name=search_term_string',
},
}
return (
<html lang="en">
<head>
{/* ... other head elements */}
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(organizationSchema) }}
/>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(websiteSchema) }}
/>
</head>
{/* ... rest */}
</html>
)
}
📋 Implementation Checklist
Phase 1: Critical Fixes (Week 1)
- Replace all
href="#"with proper URLs or buttons - Create
src/app/not-found.tsx - Add section IDs for anchor links
- Update root layout metadata
Phase 2: Important Fixes (Week 2)
- Clean up robots.txt
- Add structured data (JSON-LD)
- Create OG image (
public/og-image.png) - Add canonical URLs to all pages
Phase 3: Optimization (Week 3)
- Add breadcrumb schema to docs pages
- Add article schema to blog posts
- Implement dynamic metadata for all pages
- Add alt text to all images
🎯 Expected Improvements
After implementing these fixes:
- 404 Errors: Should drop from 804 to <10
- Crawl Efficiency: Improved by ~60%
- SEO Score: Expected increase of 15-20 points
- User Experience: Significantly better navigation
- Search Rankings: Gradual improvement over 2-3 months
📊 Monitoring
After deployment, monitor:
Google Search Console:
- Coverage report
- Core Web Vitals
- Mobile usability
Analytics:
- Bounce rate on 404 page
- Navigation patterns
- Search traffic
Tools:
- Lighthouse CI
- Ahrefs/SEMrush
- Screaming Frog
🔗 Resources
Next Steps: Review this report and prioritize fixes based on business impact.
Feedback