Commit Graph

39 Commits

Author SHA1 Message Date
manuyasm87 b12830ad49 feat(seo): add geo coordinates to LocalBusiness schema
Geocoded from the confirmed address (Calle Borde Alegre, 1, 29014
Málaga) via OpenStreetMap/Nominatim.
2026-09-17 09:19:51 +02:00
manuyasm87 4b08a898bf fix(a11y): fix invisible text on corporativo bento cards
The three service cards (Lanzamientos de Marca, Coffee Breaks Premium,
Galas & Cenas Anuales) used dark 'on-surface' text tokens over a photo
with a dark gradient overlay -- text was effectively invisible against
the image. Every other bento-card usage on the site (bodas-reales.astro)
correctly uses text-white for this exact pattern; corporativo-business
was the one page that didn't.
2026-09-15 19:42:48 +02:00
manuyasm87 a314ab9714 fix(seo): expand areaServed schema to match confirmed GBP service area
Owner confirmed real coverage in Marbella, Benalmádena, Fuengirola, and
Torremolinos in addition to Málaga city/province -- these are already
set as the service area on Google Business Profile. Updated the JSON-LD
areaServed list and llms.txt to match, so NAP/area signals are
consistent between the site and GBP.
2026-09-15 19:02:37 +02:00
manuyasm87 d67a540738 fix(seo): correct business address to Calle Borde Alegre, 1
Replaces the previously confirmed Calle Camino Vivero, 6 -- owner gave a
corrected address. Updated in JSON-LD PostalAddress, footer, /contacto,
and llms.txt.
2026-09-15 18:24:37 +02:00
manuyasm87 d17f75c423 fix(seo): add baseline security headers; unify brand name to singular
- src/middleware.ts now sets HSTS, X-Content-Type-Options, X-Frame-Options,
  Referrer-Policy, and Permissions-Policy on every response -- all were
  absent per the 2026-09-15 audit. CSP deliberately left out: the site
  uses unnoned inline scripts, inline style attributes throughout, and a
  runtime-configured analytics script host, so a real CSP needs its own
  pass with live testing rather than a guess.
- SiteHeader.astro and SiteFooter.astro logo alt/aria-label said 'MNQ
  Catering y Eventos' (plural) while every title tag, the JSON-LD name,
  og:site_name, and package.json all say 'MNQ Catering y Evento'
  (singular) -- unified to the singular form used everywhere else.
2026-09-15 10:31:33 +02:00
manuyasm87 b084aeff6e fix(seo): exclude noindex aviso-legal page from sitemap; add full audit report
Sitemap filter was excluding cookies/ and privacidad/ but not
aviso-legal/, even though that page is marked noindex,follow -- a
noindexed page has no business being listed for crawl discovery.

Also adds docs/seo-audit/mnqcatering.com-audit/ -- the full multi-agent
SEO audit run this session against the corrected live domain
(www.mnqeventos.es), including the FULL-AUDIT-REPORT.md, ACTION-PLAN.md,
and per-category findings files.
2026-09-15 10:19:00 +02:00
manuyasm87 a6692b7540 fix(seo): correct canonical domain to www.mnqeventos.es
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
2026-09-15 10:07:24 +02:00
manuyasm87 0e242a6116 docs(seo): add search-engine publication and local SEO checklist 2026-09-15 07:36:52 +02:00
manuyasm87 5741e68181 fix(seo): redirect non-canonical domains to www.mnqcatering.com
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.
2026-09-14 19:37:09 +02:00
manuyasm87 5c0ed95e9e feat(seo): add local business address and area served signals
- 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
2026-09-14 19:37:07 +02:00
manuyasm87 9218c5d483 chore(deps): upgrade astro to v7 and bump runtime to node 22
- 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)
2026-09-14 19:37:05 +02:00
manuyasm87 20d50411aa chore: sync project state 2026-09-01 10:06:25 +02:00
manuyasm87 b97d0724db fix: update nosotros hero image 2026-08-14 16:08:01 +02:00
Manuel f2c8fff71e fix: replace AI-generated chef photo on reuniones-familiares
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.
2026-07-22 00:23:36 +02:00
Manuel 92193448e1 feat: fill contacto page gap with plated dessert photo
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.
2026-07-22 00:16:27 +02:00
Manuel cfa9f4c444 feat: remove contact form and switch canonical domain to mnqcatering.com
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.
2026-07-22 00:10:49 +02:00
Manuel 3917fe3997 fix: swap nosotros lead photo and drop header WhatsApp pill
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.
2026-07-22 00:04:25 +02:00
Manuel 3dfbeb25b6 feat: update nosotros hero photo and trim team gallery to two photos
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.
2026-07-21 23:57:06 +02:00
Manuel 6359d7f312 fix: stop team gallery photos from collapsing on desktop
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.
2026-07-21 23:49:35 +02:00
Manuel 87d07d495f fix: keep mobile whatsapp cta compact 2026-07-21 23:34:04 +02:00
Manuel 674272caac feat: refresh nosotros team gallery 2026-07-21 21:39:32 +02:00
Manuel 0e97c8af1c feat: prepare privacy-first analytics integration 2026-07-21 00:44:41 +02:00
Manuel 552f0fa576 docs: add legal notice placeholder 2026-07-20 21:00:37 +02:00
Manuel fe82281278 perf: improve mobile loading path 2026-07-20 17:16:31 +02:00
Manuel faed590a66 feat: improve seo, trust signals, and performance 2026-07-20 12:07:23 +02:00
Manuel 49f391ee49 Revert "feat: slower entrance animations for a more elegant feel"
This reverts commit 62355e154d.
2026-05-10 16:29:46 +02:00
Manuel 62355e154d feat: slower entrance animations for a more elegant feel 2026-05-10 16:24:36 +02:00
Manuel cc55641edf fix: mobile-first responsive improvements across all pages 2026-05-10 16:09:26 +02:00
Manuel f1c1f54ef9 feat: page transitions, scroll progress bar, and staggered value cards 2026-05-10 15:41:03 +02:00
Manuel 97c05ff620 feat: premium motion system — scroll reveal, hero cascade, gold accents 2026-05-10 14:27:44 +02:00
Manuel 801662e3f0 perf: compress images — PNG→JPG/WebP, 85% size reduction 2026-05-08 06:09:38 +02:00
Manuel 34386daca6 feat: privacy policy, cookie policy and cookie consent banner 2026-05-08 01:27:24 +02:00
Manuel 58eb6dc952 feat: mobile improvements — hamburger menu, responsive typography, grid fixes 2026-05-08 01:24:57 +02:00
Manuel c3667512e5 fix: add start script and nixpacks.toml for Dokploy deployment 2026-05-08 01:18:07 +02:00
Manuel 6c3f4a92e4 feat: add Dockerfile for Dokploy deployment 2026-05-08 01:14:48 +02:00
Manuel df105b9318 fix: remove white background from logo-monograma (CTA section) 2026-05-08 01:13:48 +02:00
Manuel f77d811f18 feat: rediseño premium completo del sitio MNQ
- 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
2026-05-08 01:12:03 +02:00
Manuel 50b4e75edd docs: add redesign references and agent guidance 2026-05-07 23:39:53 +02:00
Manuel 51b0d1fb67 chore: bootstrap MNQ Astro site 2026-05-07 18:23:50 +02:00