Módulo 1 · Backend integrado

Formulario de contacto

Tu primera función real: un formulario que valida, guarda cada inscripción en el backend integrado de Horizons y avisa por correo al dueño del curso.

5 prompts Backend integrado Test data / Live data Accesibilidad

Qué se construye

Un formulario para un curso ficticio. Una persona completa sus datos y recibe feedback claro. Horizons guarda cada registro y envía una notificación.

El alumno ve tres capas separadas, y cada prompt trabaja sobre una sola:

  • Interfaz — el formulario y los campos que completa una persona.
  • Lógica — las validaciones y los estados del formulario.
  • Backend integrado — el registro guardado y la notificación por correo.

Campos del formulario

CampoTipoRegla
Nombre completoTextoObligatorio, entre 2 y 80 caracteres
Correo electrónicoEmailObligatorio y con formato válido
Nivel de experienciaSelectorOpcional: Principiante total / Sé HTML / Sé HTML y CSS básico
ConsentimientoCasillaObligatoria para aceptar el uso de los datos
Antes de empezar

Reemplaza [EMAIL_DEL_DUEÑO] por el correo que debe recibir las notificaciones — aparece en el Prompt 4. Si cambias el concepto del curso, sustituye también nombre, promesa y resultados de aprendizaje de forma consistente.

Los cinco prompts

Cada uno usa la estructura C.L.A.R.O. y termina con una comprobación. No pases al siguiente sin hacerla.

Prompt 1 Crear la estructura de la landing
CONTEXTO
Estoy creando una landing de inscripción para un curso ficticio dirigido a
personas que quieren aprender CSS desde cero. El curso se llama
"CSS desde Cero".

LOGRO DE ESTA ITERACIÓN
Crea únicamente la estructura y el contenido principal de una landing de una
sola página. Todavía no agregues el formulario ni conectes backend.

ALCANCE
- Hero con el nombre "CSS desde Cero", la promesa "Aprende a transformar HTML
  simple en interfaces claras, responsivas y profesionales" y un botón
  "Quiero aprender CSS".
- Sección con estos tres resultados: dominar selectores y cascada, construir
  layouts con Flexbox y Grid, y adaptar interfaces a móvil.
- Resumen de tres etapas: fundamentos, layouts y proyecto final.
- Sección vacía identificable como destino del futuro formulario.
- Pie de página sencillo que aclare que es un proyecto educativo.
- El botón del hero debe desplazarse a la sección del futuro formulario.

REGLAS
- Estilo editorial contemporáneo: fondo oscuro, superficies ligeramente más
  claras y acento violeta.
- Jerarquía tipográfica clara, texto legible y ancho de lectura cómodo.
- No agregues precios, testimonios, contador, login, navegación compleja,
  formulario ni funciones de backend.
- No inventes contenido adicional.

COMPROBACIÓN
- El propósito del curso y la acción principal se entienden en menos de diez
  segundos.
- El botón lleva a la sección correcta.
- No existe todavía ningún formulario ni integración.
Prueba 1
  • Leer solo el hero: ¿se entiende qué es, para quién es y qué se aprenderá?
  • Pulsar el CTA: ¿lleva al lugar reservado?
  • Confirmar que Horizons no añadió funciones fuera del alcance.
Prompt 2 Construir el formulario accesible
CONTEXTO
Continúa sobre la landing existente de "CSS desde Cero".

LOGRO DE ESTA ITERACIÓN
Reemplaza la sección reservada por un formulario de inscripción completo a
nivel visual. Todavía no guardes datos ni envíes correos.

ALCANCE
- Campo de texto "Nombre completo", obligatorio.
- Campo de email "Correo electrónico", obligatorio.
- Selector "Nivel de experiencia", opcional, con estas opciones:
  "Principiante total", "Sé HTML" y "Sé HTML y CSS básico".
- Casilla obligatoria con el texto "Acepto que usen estos datos para
  contactarme sobre el curso".
- Botón "Quiero apuntarme".
- Nota breve: "Usaremos tus datos únicamente para responder a tu inscripción".

REGLAS
- Mantén intactos el contenido y el estilo general de la landing.
- Usa etiquetas siempre visibles asociadas a sus controles.
- Incluye estados de foco claramente visibles.
- No uses placeholders como sustituto de etiquetas.
- No conectes backend, colección de datos ni correo todavía.

COMPROBACIÓN
- Todos los controles pueden recorrerse en orden usando solo el teclado.
- Las etiquetas siguen visibles cuando se escribe.
- El formulario se entiende sin instrucciones adicionales.
Prueba 2
  • Recorrer los controles con Tab.
  • Comprobar etiquetas, orden y opciones del selector.
  • Confirmar que todavía no se guarda ni se envía nada.
Prompt 3 Agregar validación y estados
CONTEXTO
El formulario visual de "CSS desde Cero" ya existe. Ahora necesita lógica del
lado de la interfaz antes de conectarlo al backend.

LOGRO DE ESTA ITERACIÓN
Agrega validaciones y estados claros sin cambiar el diseño ni los textos ya
aprobados.

ALCANCE
- "Nombre completo": obligatorio, entre 2 y 80 caracteres.
- "Correo electrónico": obligatorio y con formato de email válido.
- "Nivel de experiencia": opcional.
- "Consentimiento": debe estar marcado.
- Muestra cada error junto a su campo y retíralo cuando se corrija.
- Si hay errores, mueve el foco al primer campo inválido y no simules un envío.
- Si todo es válido, muestra temporalmente un estado de éxito local para poder
  probar esta iteración; aún no guardes datos ni envíes correos.

REGLAS
- Conserva el contenido, el layout y la accesibilidad existentes.
- Usa mensajes específicos que expliquen cómo corregir cada problema.
- No agregues backend ni dependencias externas.

COMPROBACIÓN
- Un formulario vacío muestra los errores correspondientes.
- Un email inválido se rechaza.
- El nivel puede quedar sin selección.
- Al corregir los campos, desaparecen sus errores.
- Un formulario válido llega al estado de éxito local.
Prueba 3
  • Enviar vacío.
  • Probar un nombre de un carácter y un correo sin @.
  • Corregir todo sin seleccionar nivel.
  • Verificar que el foco y los mensajes guían la corrección.
Prompt 4 Conectar el backend integrado
CONTEXTO
La landing y sus validaciones ya funcionan. Ahora convierte el formulario en
una función real usando exclusivamente el backend integrado de Hostinger
Horizons.

LOGRO DE ESTA ITERACIÓN
Guardar cada inscripción válida y avisar al dueño del curso por correo.

ALCANCE
- Crea una colección de datos llamada "Inscripciones CSS".
- Guarda: nombre completo, correo electrónico, nivel de experiencia,
  consentimiento y fecha/hora de creación.
- Envía una notificación a [EMAIL_DEL_DUEÑO] después de guardar correctamente.
- El correo debe incluir nombre, email y nivel; si no se eligió nivel, indica
  "No especificado".
- Mientras se procesa, cambia el botón a "Enviando..." y desactívalo.
- Solo después de confirmar el guardado, muestra
  "¡Inscripción recibida! Te contactaremos pronto" y limpia el formulario.
- Si algo falla, muestra "No pudimos enviar tu inscripción. Inténtalo de nuevo"
  y conserva todos los datos escritos.

REGLAS
- Mantén intactas las validaciones y la apariencia aprobadas.
- No permitas envíos dobles.
- No uses Supabase, servicios de correo externos, APIs ni credenciales en el
  frontend.
- Usa Test data en Preview; no mezcles datos de prueba con Live data.

COMPROBACIÓN
- Un envío válido crea exactamente un registro en "Inscripciones CSS".
- El registro contiene todos los campos y la fecha/hora.
- Llega una notificación a [EMAIL_DEL_DUEÑO].
- Un fallo no limpia el formulario.
- Varios clics rápidos no crean duplicados.
Prueba 4
  • Sustituir [EMAIL_DEL_DUEÑO] antes de enviar el prompt.
  • Completar una inscripción desde Preview.
  • Abrir Data → Inscripciones CSS → Test data.
  • Verificar un solo registro y revisar el correo.
  • No publicar hasta que ambas comprobaciones pasen.
Prompt 5 Auditoría responsive y accesible
CONTEXTO
La landing de "CSS desde Cero" ya comunica, valida, guarda datos y envía una
notificación.

LOGRO DE ESTA ITERACIÓN
Haz una auditoría final y corrige únicamente problemas de responsive,
accesibilidad o estados, sin rediseñar la página.

ALCANCE
- Revisa anchos de 375 px, 768 px y escritorio.
- Evita cualquier desbordamiento horizontal.
- En móvil, apila el contenido, usa campos y botón al ancho disponible y
  conserva un espaciado cómodo.
- Verifica contraste legible, etiquetas asociadas, foco visible, orden de
  teclado y mensajes anunciables para tecnologías de asistencia.
- Respeta la preferencia de movimiento reducido.
- Conserva los estados: normal, foco, error, enviando, éxito y fallo.

REGLAS
- No cambies textos, campos, validaciones, colección, email ni flujo del
  backend.
- No agregues secciones, librerías ni animaciones decorativas.

COMPROBACIÓN
- No hay cortes ni desbordamientos en los tres anchos.
- Todo el formulario funciona con teclado.
- La integración sigue creando un solo registro y enviando una notificación.
- El diseño conserva su jerarquía visual.
Prueba 5 y publicación
  • Repetir la prueba válida después del pulido.
  • Publicar la página.
  • Hacer una inscripción final desde la URL pública.
  • Confirmar que aparece en Live data, no en Test data.

Si algo falla

No vuelvas a pedir el proyecto completo. Describe el defecto con evidencia y limita la corrección a esa causa:

Corrección Prompt para arreglar un defecto
En la versión actual ocurre este problema:
[QUÉ OCURRE].

Lo reproduzco así:
1. [PASO 1]
2. [PASO 2]
3. [PASO 3]

Resultado esperado:
[RESULTADO].

Resultado actual:
[RESULTADO].

Corrige únicamente esta causa. Conserva sin cambios:
[FUNCIONES QUE YA ESTÁN APROBADAS].

Después de corregir, verifica:
[PRUEBA CONCRETA].

Criterios de aceptación

El proyecto está terminado cuando puedes marcar todo esto:

  • La propuesta del curso se entiende en menos de diez segundos.
  • El CTA lleva al formulario.
  • Los cuatro controles cumplen sus reglas.
  • Los errores se entienden y se pueden corregir.
  • Un envío válido aparece en Test data dentro de Inscripciones CSS.
  • La notificación llega al correo configurado.
  • El estado de carga evita envíos repetidos.
  • Un fallo conserva los datos del formulario.
  • La landing funciona a 375 px y en escritorio.
  • La navegación por teclado y los estados de foco son visibles.
  • Tras publicar, una prueba aparece en Live data.