feat: improve seo, trust signals, and performance

This commit is contained in:
Manuel
2026-07-20 12:07:23 +02:00
parent 49f391ee49
commit faed590a66
27 changed files with 1444 additions and 153 deletions
+42 -71
View File
@@ -1,81 +1,52 @@
# AGENTS.md
## Stack
## Stack and runtime
- Astro 5 SSR with `@astrojs/node` in `standalone` mode.
- Production entrypoint is `node ./dist/server/entry.mjs`.
- Runtime target is Node 20 (`Dockerfile` and `nixpacks.toml` both pin Node 20).
- TypeScript extends `astro/tsconfigs/strict`.
- **Framework:** Astro 5
- **Adapter:** `@astrojs/node`
- **Rendering mode:** SSR
- **Runtime target:** Node standalone en VPS con Dokploy
- **Styling:** CSS custom con variables CSS
- **Responsive approach:** mobile-first
## Verified commands
- Install deps: `npm install` or `npm ci`
- Dev server: `npm run dev`
- Type/content check: `npm run check`
- Build: `npm run build`
- Local preview: `npm run preview`
- Production start: `npm run start`
## Arquitectura del producto
Recommended verification after UI/content changes:
1. `npm run check`
2. `npm run build`
Sitio institucional multipágina enfocado en **captación de leads por WhatsApp**.
There are currently no repo scripts for linting, formatting, or tests, and no CI workflows to rely on.
Páginas aprobadas:
## Real app structure
- File-based routes live in `src/pages/`.
- Main public routes: `index.astro`, `nosotros.astro`, `bodas-reales.astro`, `corporativo-business.astro`, `reuniones-familiares.astro`, `contacto.astro`.
- Legal routes are part of the real surface area: `cookies.astro` and `privacidad.astro`.
- Shared shell is `src/layouts/MainLayout.astro`.
- Shared UI lives in `src/components/`.
- Global styling is split across `src/styles/tokens.css`, `base.css`, `layout.css`, `components.css`, `utilities.css`, and `animations.css`.
- Home
- Nosotros
- Bodas Reales
- Corporativo & Business
- Reuniones Familiares
- Contacto
## Important implementation facts
- `MainLayout.astro` is the real wiring point: it imports all global CSS and mounts `SiteHeader`, `SiteFooter`, `WhatsAppButton`, and `CookieBanner` on every page.
- `MainLayout.astro` also owns global client behavior: reveal-on-scroll, scroll progress bar, reduced-motion handling, and internal-link fade transitions.
- This is a marketing site optimized for WhatsApp lead capture. Keep WhatsApp as the primary CTA and treat the contact form as secondary.
- The contact form in `src/pages/contacto.astro` is presentational only (`method="dialog"`); do not describe or treat it as a working backend submission flow.
- The WhatsApp destination is hardcoded in multiple places (`+34 678 17 15 13` / `34678171513`). If lead routing changes, search for all occurrences instead of updating a single component and assuming coverage.
## Comandos
## Content and design constraints
- Keep the mobile-first approach in base styles and layout decisions.
- Use CSS variables/tokens instead of introducing utility CSS frameworks.
- Keep service pages structurally consistent, but do not clone copy blindly: adapt CTA, gallery, and messaging per service.
- Galleries belong inside each service page, not as a separate gallery page.
- Preserve the premium editorial tone from `DESIGN.md`; gold is an accent, not a dominant fill color.
Comandos esperados para la implementación del proyecto:
## Deployment notes
- Docker and Nixpacks both expect a built SSR app and start with `node ./dist/server/entry.mjs`.
- Runtime env defaults used by deploy config: `HOST=0.0.0.0`, `PORT=4321`, `NODE_ENV=production`.
| Acción | Comando |
| --- | --- |
| Instalar dependencias | `npm install` |
| Desarrollo | `npm run dev` |
| Build | `npm run build` |
| Preview / ejecución standalone | `node ./dist/server/entry.mjs` |
## Convenciones
1. Priorizar claridad comercial y conversión por WhatsApp.
2. Mantener arquitectura mobile-first desde el CSS base.
3. Usar variables CSS para tokens de color, spacing, tipografía, radios y sombras.
4. Evitar frameworks de utilidades si no aportan valor claro al sistema visual.
5. Mantener consistencia estructural entre páginas de servicio.
6. Las galerías deben vivir dentro de cada servicio, no como página independiente.
7. El formulario de contacto debe ser secundario respecto a WhatsApp.
## Don'ts
- No usar `@astrojs/cloudflare` para este proyecto: el deployment objetivo es Dokploy sobre VPS.
- No diseñar desktop-first.
- No mezclar estilos premium editoriales con componentes visualmente ruidosos.
- No usar dorado como color masivo de relleno; usarlo como acento.
- No construir páginas de servicio genéricas copiadas una de otra sin adaptar copy, CTA y galería.
## Estructura CSS recomendada
- `src/styles/tokens.css`
- `src/styles/base.css`
- `src/styles/layout.css`
- `src/styles/components.css`
- `src/styles/utilities.css`
## Skills
Habilidades especialmente relevantes para este proyecto:
- `project-docs`
- `brainstorming`
- `responsive-design`
- `visual-design-foundations`
- `interface-design`
- `accessibility-compliance`
## Nota para futuros agentes
Antes de implementar:
1. Leer `README.md`
2. Leer este `AGENTS.md`
3. Leer `DESIGN.md`
4. Respetar el enfoque comercial: WhatsApp primero
5. Respetar el enfoque visual: claro editorial premium
## Repo-specific gotchas
- Ignore generated/build output: `.astro/` and `dist/`.
- `.gitignore` also excludes `.opencode/`, `.worktrees/`, and local planning artifacts under `docs/plans/`.
- Read `DESIGN.md` before making visual changes; it contains the project’s visual system and tone constraints.