Summary
/sitemap.xml omits several public pages that should be indexed. The route emits only the homepage, /compare, and the project detail pages — /explore, /contact, and the profile page are missing, so search engines never discover them.
Evidence
src/routes/main_routes.py:492-517 (sitemap):
urls = [f"<url><loc>{base}/</loc></url>", f"<url><loc>{base}/compare</loc></url>"]
for p in projects:
urls.append(f"<url><loc>{base}/project/{p['id']}</loc></url>")
The route is explicitly documented as "Includes the homepage and all individual project detail pages" — /explore (the project catalog, @main.route("/explore")), /contact, and /profile are registered public routes but never listed. (Separately, note the URL prefix is derived from request.host_url, whose Host-header behavior is already tracked in #544.)
Impact
/explore — arguably the most important crawlable page (the project catalog) — is absent from the sitemap, hurting SEO.
- Contact/profile pages are also invisible to crawlers via the sitemap.
Suggested Fix
Add the missing public routes to the urls list (including /explore and /contact), and consider adding a test asserting the sitemap contains every registered public page route.
Summary
/sitemap.xmlomits several public pages that should be indexed. The route emits only the homepage,/compare, and the project detail pages —/explore,/contact, and the profile page are missing, so search engines never discover them.Evidence
src/routes/main_routes.py:492-517(sitemap):The route is explicitly documented as "Includes the homepage and all individual project detail pages" —
/explore(the project catalog,@main.route("/explore")),/contact, and/profileare registered public routes but never listed. (Separately, note the URL prefix is derived fromrequest.host_url, whose Host-header behavior is already tracked in #544.)Impact
/explore— arguably the most important crawlable page (the project catalog) — is absent from the sitemap, hurting SEO.Suggested Fix
Add the missing public routes to the
urlslist (including/exploreand/contact), and consider adding a test asserting the sitemap contains every registered public page route.