SEO tweaks

This commit is contained in:
2025-11-20 23:43:02 -05:00
parent cf010974dd
commit 5305c34e3d
5 changed files with 183 additions and 3 deletions

View File

@@ -53,6 +53,18 @@ def index():
return render_template('index.html') return render_template('index.html')
@app.route('/robots.txt')
def robots_txt():
"""Serve robots.txt file."""
return send_file('../web/static/robots.txt', mimetype='text/plain')
@app.route('/sitemap.xml')
def sitemap_xml():
"""Serve sitemap.xml file."""
return send_file('../web/static/sitemap.xml', mimetype='application/xml')
@app.route('/api/algorithms', methods=['GET']) @app.route('/api/algorithms', methods=['GET'])
def get_algorithms(): def get_algorithms():
"""Get list of available algorithms.""" """Get list of available algorithms."""

39
web/static/manifest.json Normal file
View File

@@ -0,0 +1,39 @@
{
"name": "Maze Generator",
"short_name": "MazeGen",
"description": "Generate and solve mazes with 8 different algorithms. Features animated pathfinding visualization.",
"start_url": "/",
"display": "standalone",
"background_color": "#F5F5F5",
"theme_color": "#FFE500",
"orientation": "portrait-primary",
"icons": [
{
"src": "/static/images/icon-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any maskable"
},
{
"src": "/static/images/icon-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any maskable"
}
],
"categories": ["education", "entertainment", "utilities"],
"screenshots": [
{
"src": "/static/images/screenshot-wide.png",
"sizes": "1280x720",
"type": "image/png",
"form_factor": "wide"
},
{
"src": "/static/images/screenshot-mobile.png",
"sizes": "750x1334",
"type": "image/png",
"form_factor": "narrow"
}
]
}

21
web/static/robots.txt Normal file
View File

@@ -0,0 +1,21 @@
# Robots.txt for Maze Generator
# Allow all search engines to index the site
User-agent: *
Allow: /
Disallow: /api/
# Specific crawlers
User-agent: Googlebot
Allow: /
Disallow: /api/
User-agent: Bingbot
Allow: /
Disallow: /api/
# Sitemap location
Sitemap: https://yoursite.com/sitemap.xml
# Crawl delay (optional)
Crawl-delay: 1

15
web/static/sitemap.xml Normal file
View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://yoursite.com/</loc>
<lastmod>2025-01-20</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
<image:image>
<image:loc>https://yoursite.com/static/images/screenshot.png</image:loc>
<image:title>Maze Generator - Neo-Brutalism Design</image:title>
<image:caption>Interactive maze generator with 8 algorithms and animated solving</image:caption>
</image:image>
</url>
</urlset>

View File

@@ -1,21 +1,113 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<!-- Primary Meta Tags -->
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MAZE GENERATOR</title> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Maze Generator | 8 Algorithms, Animated Solving, Neo-Brutalism Design</title>
<meta name="title" content="Maze Generator | 8 Algorithms, Animated Solving, Neo-Brutalism Design">
<meta name="description" content="Generate and solve mazes with 8 different algorithms including Recursive Backtracking, Kruskal, Prim, and more. Features animated pathfinding visualization, analysis tools, and Neo-Brutalism design. Free online maze generator and solver.">
<meta name="keywords" content="maze generator, maze solver, pathfinding, algorithms, DFS, BFS, recursive backtracking, kruskal algorithm, prim algorithm, maze visualization, animated solving, Neo-Brutalism, Python, educational tool">
<meta name="author" content="Maze Generator">
<meta name="robots" content="index, follow">
<meta name="language" content="English">
<meta name="revisit-after" content="7 days">
<!-- Canonical URL -->
<link rel="canonical" href="https://yoursite.com/">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://yoursite.com/">
<meta property="og:title" content="Maze Generator | 8 Algorithms, Animated Solving">
<meta property="og:description" content="Generate and solve mazes with 8 different algorithms. Features animated pathfinding visualization, analysis tools, and Neo-Brutalism design. Free online maze generator and solver.">
<meta property="og:image" content="https://yoursite.com/static/images/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:site_name" content="Maze Generator">
<meta property="og:locale" content="en_US">
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:url" content="https://yoursite.com/">
<meta name="twitter:title" content="Maze Generator | 8 Algorithms, Animated Solving">
<meta name="twitter:description" content="Generate and solve mazes with 8 different algorithms. Features animated pathfinding visualization and Neo-Brutalism design.">
<meta name="twitter:image" content="https://yoursite.com/static/images/twitter-image.png">
<!-- Favicon -->
<link rel="icon" type="image/png" sizes="32x32" href="/static/images/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/images/favicon-16x16.png">
<link rel="apple-touch-icon" sizes="180x180" href="/static/images/apple-touch-icon.png">
<link rel="manifest" href="/static/manifest.json">
<!-- Theme Color -->
<meta name="theme-color" content="#FFE500">
<meta name="msapplication-TileColor" content="#000000">
<!-- Preconnect for Performance -->
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@700&display=swap" rel="stylesheet">
<!-- Stylesheet -->
<link rel="stylesheet" href="/static/css/styles.css"> <link rel="stylesheet" href="/static/css/styles.css">
<!-- Structured Data (JSON-LD) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "Maze Generator",
"description": "Generate and solve mazes with 8 different algorithms including Recursive Backtracking, Kruskal, Prim, Sidewinder, Hunt-and-Kill, Eller, Wilson, and Aldous-Broder. Features animated pathfinding visualization with DFS and BFS solvers.",
"url": "https://yoursite.com/",
"applicationCategory": "EducationalApplication",
"operatingSystem": "Any",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"creator": {
"@type": "Organization",
"name": "Maze Generator",
"location": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"addressRegion": "New Jersey",
"addressCountry": "US"
}
}
},
"featureList": [
"8 maze generation algorithms",
"2 solving algorithms (DFS, BFS)",
"Animated pathfinding visualization",
"Pause/resume controls",
"Speed adjustment",
"Maze analysis tools",
"Performance benchmarking",
"Save and load mazes",
"PNG image export",
"Neo-Brutalism design"
],
"screenshot": "https://yoursite.com/static/images/screenshot.png"
}
</script>
</head> </head>
<body> <body>
<div class="container"> <div class="container">
<header class="header"> <header class="header" role="banner">
<h1 class="title">MAZE GENERATOR</h1> <h1 class="title">MAZE GENERATOR</h1>
<p class="subtitle">8 ALGORITHMS • INFINITE POSSIBILITIES</p> <p class="subtitle">8 ALGORITHMS • INFINITE POSSIBILITIES</p>
</header> </header>
<main role="main">
<div class="main-grid"> <div class="main-grid">
<!-- Control Panel --> <!-- Control Panel -->
<div class="panel control-panel"> <div class="panel control-panel">
@@ -119,10 +211,11 @@
</div> </div>
</div> </div>
</div> </div>
</main>
</div> </div>
<!-- Footer --> <!-- Footer -->
<footer class="footer"> <footer class="footer" role="contentinfo">
<div class="footer-content"> <div class="footer-content">
<div class="copyleft"> <div class="copyleft">
<span class="copyleft-symbol">🄯</span> <span class="copyleft-symbol">🄯</span>