## Summary - Add `robots.txt`, `sitemap.xml`, and `llms.txt` endpoints so crawlers and AI agents can discover public pages - Fix accessibility tree issues: contact form labels, semantic nav/profile dropdown buttons, cookie consent dialog ARIA, and dead `href="#"` links - Reduce layout shift on homepage/contact via hero min-heights, trusted-by marquee sizing, and fixed cookie banner - Add regression tests and `docs/agentic-browsing.md` for Lighthouse agentic-browsing audits Closes #5. Also addresses overlap with #3 (sitemap + robots.txt). ## Test plan - [x] `python manage.py test public.tests` (14 tests pass) - [ ] Verify `GET /robots.txt`, `/sitemap.xml`, `/llms.txt` return 200 in staging/prod - [ ] Confirm contact form labels visible and submittable on `/contact` - [ ] Run Lighthouse `--only-categories=agentic-browsing` on homepage and contact page - [ ] Smoke test mobile nav dropdown and cookie consent banner Reviewed-on: #8
24 lines
1.1 KiB
Python
Executable File
24 lines
1.1 KiB
Python
Executable File
from django.urls import path
|
|
|
|
from . import seo, views
|
|
|
|
urlpatterns = [
|
|
path("robots.txt", seo.robots_txt, name="robots_txt"),
|
|
path("sitemap.xml", seo.sitemap_xml, name="sitemap_xml"),
|
|
path("llms.txt", seo.llms_txt, name="llms_txt"),
|
|
path("", views.index, name="public_index"),
|
|
path("chat", views.chat, name="chat"),
|
|
path("ai_education", views.ai_education, name="ai_education"),
|
|
path("computer", views.computers, name="computers"),
|
|
path("web_design", views.web_design, name="web_design"),
|
|
path("ai_sensor", views.ai_sensor, name="ai_sensor"),
|
|
path("file_hosting", views.file_hosting, name="file_hosting"),
|
|
path("bot_creation", views.bot, name="bot"),
|
|
path("forward-deployed-ai", views.forward_deployed, name="forward_deployed"),
|
|
path("ml_model", views.ml_model, name="ml_model"),
|
|
path("contact", views.contact, name="contact"),
|
|
path("terms", views.terms_of_service, name="terms_of_service"),
|
|
path("change_password", views.change_password, name="change_password"),
|
|
path("preview_email/<int:pk>/", views.preview_email, name="preview_email")
|
|
]
|