<!-- Portada: la imagen es lo primero que se pinta. --> <section class="hero grid gap-6 py-24">- <img src="portada.jpg" class="w-full rounded-xl">+ <img src="portada.avif" class="w-full rounded-xl"+ width="1600" height="900" decoding="async"+ fetchpriority="high" alt="Cocina en Chamberí"> <h1 class="text-5xl font-semibold tracking-tight"> Reformas integrales en Madrid, sin sorpresas </h1> <p class="max-w-prose text-lg text-neutral-400"> Presupuesto cerrado en 48 horas laborables. </p> <a href="/contacto" class="btn">Pedir presupuesto</a> </section>
El teu web va lent o s’ha quedat antic: l’arreglo o te’n faig un de nou
Primer el reviso gratis i et dic què li passa. Si es pot arreglar, et passo un pressupost tancat. Si surt més a compte fer-ne un de nou, el refaig amb un dels plans, hi passo el teu contingut i mantinc les teves visites de Google sense cost extra.
Per a qui és
- Webs que triguen a carregar i perden visites per això
- Webs on actualitzar un connector fa por
- Qui ha perdut posicions a Google des de l’últim canvi
Per a qui no és
- Webs acabats de fer en què el problema és el contingut i no el codi
- Botigues amb lògica complexa de WooCommerce: per a això hi ha el desenvolupament a mida
Com ho faig
Primer, la revisió gratuïta
El miro jo, a mà: el que triga a carregar, si es pot fer servir amb teclat i lector de pantalla i el que llegeix Google. En menys de 48 hores laborables et dic els tres problemes que més costen i per on començaria, amb el seu preu.
Si es pot arreglar, pressupost tancat
Et dic què arreglo, quant costa i quant trigo, per escrit i abans de tocar res.
Si no, un web nou amb el teu contingut
El refaig amb el pla que encaixi i hi passo els teus textos, les teves imatges i les teves entrades sense cost extra.
Sense perdre les teves visites de Google
Cada adreça antiga porta a la seva pàgina nova, comprovada una a una. És just on les migracions barates s’emporten el posicionament.
El que canvio quan reviso un web.
Set exemples del tipus de canvi que surt d’una revisió. A l’esquerra el que sol haver-hi; a la dreta el que hi deixo. El codi és d’exemple: els problemes són els de sempre.
.listado { display: grid; gap: 1rem; } -/* Tres saltos, y ninguno sabe cuánto sitio hay. */+/* La tarjeta mide su hueco, no la ventana. */-.tarjeta { padding: 16px; font-size: 18px; }+.listado { container-type: inline-size; }-+-@media (max-width: 900px) {+.tarjeta {- .tarjeta { padding: 12px; font-size: 16px; }+ padding: clamp(0.5rem, 2cqi, 1rem);-}+ font-size: clamp(0.875rem, 1.6cqi, 1.125rem);-+ border-radius: clamp(0.25rem, 1cqi, 0.75rem);-@media (max-width: 600px) {+}- .tarjeta { padding: 8px; font-size: 14px; }+-}+@container (min-width: 30rem) {+ .tarjeta { grid-template-columns: 8rem 1fr; }+}
export async function cargarListado() { const items = await db.producto.findMany({ where: { activo: true },+ // La categoría entra en la misma ida.+ include: { categoria: true }, }); - // Una consulta, y luego otra por item.- for (const item of items) {- item.categoria = await db.categoria- .findUnique({ id: item.categoriaId });- } return items; }
-<div class="menu__abrir"+<button class="menu__abrir"- onclick="abrirMenu()">+ type="button"+ aria-expanded="false"+ aria-controls="menu">+ <span class="sr-only">Abrir el menú</span> <span></span> <span></span>-</div>+</button> <nav id="menu" class="menu"> <a href="/servicios">Servicios</a> <a href="/proyectos">Proyectos</a> <a href="/precios">Precios</a> <a href="/contacto">Contacto</a> </nav>
<form method="post" action="/contacto"> <label for="email">Correo</label>- <input id="email" type="email"+ <input id="email" type="email"- name="email">+ name="email"+ aria-invalid="true"+ aria-describedby="email-error"> - <span class="error">+ <span class="error" id="email-error"+ role="alert"> Escribe un correo válido </span> <button type="submit">Enviar</button> </form>
<section class="listado"> <?php foreach ( $productos as $p ) : ?> <article class="tarjeta">- <img src="<?php echo $p['imagen']; ?>" alt="">+ <img src="<?php echo esc_url( $p['imagen'] ); ?>"- <h2><?php echo $p['nombre']; ?></h2>+ alt="<?php echo esc_attr( $p['nombre'] ); ?>">- <p><?php echo $p['descripcion']; ?></p>+ <h2><?php echo esc_html( $p['nombre'] ); ?></h2>- <a href="<?php echo $p['url']; ?>">+ <p><?php echo wp_kses_post( $p['descripcion'] ); ?></p>- Ver ficha de <?php echo $p['nombre']; ?>+ <a href="<?php echo esc_url( $p['url'] ); ?>">- </a>+ Ver ficha de <?php echo esc_html( $p['nombre'] ); ?>+ </a> </article> <?php endforeach; ?> </section>
// El esquema estaba escrito y no lo miraba nadie. const Lead = z.object({ nombre: z.string().min(2).max(80), email: z.email(), mensaje: z.string().min(10).max(2000), }); export async function POST({ request }) {- const datos = await request.json();+ const lead = Lead.safeParse(await request.json());- await guardarLead(datos);+ if (!lead.success) {+ return new Response(null, { status: 422 });+ }+ await guardarLead(lead.data); return new Response(null, { status: 204 }); }
Per on començar
Primer
Radiografia del teu web
gratis
Et miro el web i en menys de 48 hores laborables et dic què li passa i què arreglaria primer.
Demanar radiografiaDesprés
Refer el teu web antic
590 €des de
Si el teu no es pot arreglar, el refaig amb un dels plans. Hi passo el teu contingut i mantinc les teves visites de Google sense cost extra.
Demanar pressupost gratisPerquè duri
Manteniment continu
49 €al mes
Còpies, actualitzacions, seguretat i avís si el web cau, des del primer mes. Tres trams, segons quant vulguis canviar cada mes.
Veure preus
Parlem del teu projecte?
Explica’m què necessites i et dono una primera valoració en menys de 24 hores laborables.
Resposta en 24 h laborables