mnqcatering.com was never actually registered (WHOIS: no match, no DNS
records) -- it was an intended rename that never happened. The real,
live, registered production domain is www.mnqeventos.es. Every
canonical/OG/schema/sitemap/robots reference and the host-redirect
middleware pointed at the wrong, non-resolving domain; left as-is, the
middleware would have 301'd every real visitor away to a dead host.
Also fixes two schema.org validity issues found during audit:
- '@type': 'CateringService' is not a real schema.org type -- corrected
to 'CateringBusiness' (LocalBusiness/FoodEstablishment subtype)
- 'serviceType' is a Service property, not valid on LocalBusiness --
restructured as makesOffer -> Offer -> itemOffered Service entities
- telephone normalized to E.164 in the schema block
mnqeventos.es (and the bare mnqcatering.com apex) were serving the same
content as www.mnqcatering.com with no redirect, causing duplicate
content. Add middleware that 301-redirects any request whose host isn't
exactly www.mnqcatering.com to the canonical domain, preserving path and
query.
Still needs verification at the reverse-proxy/hosting layer, since host
detection here depends on how the Host header arrives in production.
- add PostalAddress and areaServed (Malaga city + province) to the
sitewide JSON-LD structured data
- show the same address as visible NAP text in the footer and on the
contact page, matching the schema exactly
- add address and area served to llms.txt for AEO/AI-crawler readability
- astro 5.18.1 -> 7.3.2 (fixes critical XSS/RCE advisory GHSA-j687-52p2-xcff)
- @astrojs/node 9.5.5 -> 11.1.5
- typescript pinned to 6.0.3 (astro 7's requirement is satisfied by astro
itself; typescript 7.x is an incompatible rewrite that breaks
@astrojs/check, so staying on the 5||6 range it still supports)
- Dockerfile and nixpacks.toml bumped from node:20 to node:22, required by
astro v6+ (minimum supported node is 22.12.0)
The "Cenas Privadas" card used hero-nosotros-gen.webp, an AI-generated
image with garbled embroidery text on the chef's jacket. Swap it for
a real photo of the MNQ kitchen team.
The two-column contact grid lost its second column when the form was
removed. Restore the layout with a real branded photo (dessert plate
with an embroidered MNQ napkin) next to the contact info instead of
leaving empty space.
Drop the non-functional contact form (no backend wired up) and keep
the WhatsApp/phone contact path as the single call to action. Also
point site config, robots.txt, llms.txt, and every on-page domain
reference at www.mnqcatering.com ahead of the DNS cutover.
Swap the lead team photo with the service/montaje photo (and give
the displaced group photo a spot in the support grid instead of
dropping it). Also remove the always-visible WhatsApp pill from the
desktop header nav since it duplicated the floating WhatsApp CTA and
the mobile drawer's own WhatsApp button.
Replace the hero image with a real event photo, and remove the third
support photo from the team gallery. Also drop the now-orphaned
last-child full-span rule so the remaining two photos sit as equal
side-by-side columns instead of one stretching full width.
The desktop breakpoint forced team-gallery-visuals into a 2-column
grid, squeezing the 3-photo support grid into ~0.9fr and shrinking
each photo to ~45px. Removing the override lets the lead photo and
support grid stack full-width as intended.
- Sistema visual nuevo: tokens CSS extendidos, tipografía Noto Serif + Inter, design system completo
- Navbar con logo generado por IA (☥MNQ ★★★★★), favicon ojo de Ra, WhatsApp CTA
- Páginas rediseñadas: Home, Bodas, Corporativo, Familiares, Nosotros, Contacto
- Imágenes premium: fotografías reales + imágenes generadas con Gemini AI via nanobanana
- Logos con fondo transparente generados y procesados
- WhatsApp actualizado a +34 678 17 15 13