El problema
Muchos clientes chicos necesitan lo mismo: portada, quiénes somos, servicios, galería y contacto. Hacer cada landing desde cero era repetir el mismo trabajo y los mismos errores.
Quería algo que se pudiera adaptar en una tarde, sin que el sitio final dependa de npm, de un servidor ni de JavaScript para mostrar el contenido.
Qué hice
- Build desde un JSON
config/site.jsondefine marca, paleta, tipografías, textos, secciones y contacto.python build.pyvalida todo y genera el HTML; si falla, no pisa la salida anterior.- Secciones reordenables
- Las secciones se muestran, ocultan y reordenan desde una lista. Navegación y pie se ajustan solos y las acciones que apuntan a secciones ocultas se omiten.
- Seguro por defecto
- Todo texto se escapa y los enlaces se validan (HTTPS, mailto, tel o anclas existentes). No se puede insertar HTML desde la configuración.
- Nexus Odontología
- La misma base, extendida con equipo, turnos por un sistema externo, reseñas de Google y casos. Cambiar el sistema de turnos es cambiar una línea del JSON.
Más pantallas
Stack
Generador
- Python 3.10+
- JSON
Solo biblioteca estándar. Tests del build en cada proyecto.
Sitio generado
- HTML
- CSS
- JavaScript opcional
Funciona sin JavaScript: el JS solo mejora el menú y las animaciones.
Decisiones
Sin framework. El cliente recibe archivos estáticos que puede subir a cualquier hosting. No hay dependencias que actualizar dentro de un año.
Errores que se entienden. Si un campo está mal, el build dice cuál y por qué. La plantilla la puede tocar alguien que no conoce el código.
Nada del cliente original. La plantilla salió de un trabajo real, pero no conserva fotos, contactos ni identidad de ese cliente. La demo usa ilustraciones SVG hechas para la plantilla.
Verlo andando
No tiene link público. Te lo muestro en una llamada o te paso acceso.