15 · Cómo está hecha
Este capítulo explica con qué está construida la herramienta y por qué eso te importa. No hace falta saber de sistemas para leerlo: cada decisión técnica tiene una consecuencia práctica.
La decisión que lo explica todo
No hay un servidor que haga los cálculos. La herramienta son archivos que tu navegador descarga una vez, y a partir de ahí todo el cálculo ocurre en tu dispositivo.
Suena a detalle técnico y no lo es. De ahí salen cuatro cosas que se notan al usarla:
| Consecuencia | Por qué |
|---|---|
| Tus cifras no salen de tu equipo | No hay a dónde mandarlas: no existe el servidor que las recibiría |
| Funciona sin conexión | Lo que se descargó la primera vez sigue ahí. El cálculo no necesita red |
| Responde de inmediato | No hay ida y vuelta a ningún lado: el resultado se rehace con cada tecla |
| No se satura | Mil personas calculando a la vez consumen los mismos recursos de servidor que una: ninguno |
Con qué está construida
| Pieza | Qué se usó | Por qué esa |
|---|---|---|
| Estructura del sitio | Astro, generando páginas estáticas | Produce HTML que funciona aunque el navegador no ejecute nada |
| Lógica de pantalla | TypeScript sin framework | La complejidad está en el cálculo, no en la interfaz. Un framework habría costado peso sin aportar nada aquí |
| Motor de cálculo | Código propio, sin dependencias externas | Una regla fiscal no se delega a una biblioteca de terceros que nadie audita |
| Gráficas | Dibujadas a mano en SVG | Cada gráfica trae su tabla equivalente, y ninguna biblioteca de terceros ve tus cifras |
| Códigos QR | Codificador propio (norma ISO/IEC 18004) | Los servicios de QR en línea reciben la dirección que codificas. Aquí no sale del sitio |
| Tipografías | Libre Franklin y Source Serif 4, alojadas en el propio sitio | Las de servicios externos informan a ese servicio cada vez que alguien abre la página |
| Funcionamiento sin conexión | Un service worker estándar del navegador | Es lo que permite instalarla y usarla sin red |
| Alojamiento | Cloudflare Pages | Red de distribución con cientos de puntos: cada quien recibe los archivos del más cercano |
Cero dependencias de terceros
Esto merece su propio apartado porque es inusual.
Nada de lo que se ejecuta en tu navegador viene de un paquete ajeno. Ni una biblioteca de gráficas, ni una de códigos QR, ni una de formato de moneda. Todo es código propio del proyecto.
La razón no es orgullo: cada dependencia es código que alguien más controla, que se actualiza sin avisar y que puede ver lo que pasa en la página. En una herramienta donde se capturan cifras de una empresa, eso es una superficie que no compensa.
De la misma forma, el sitio no hace ni una sola petición a un dominio ajeno después de cargar. Hay pruebas automáticas que fallan si aparece una.
Cómo se comprueba que funciona
El proyecto no se entrega porque «se ve bien». Cada versión pasa por comprobaciones automáticas antes de poder publicarse:
| Qué se comprueba | Cuántas |
|---|---|
| Cálculos del motor, contra cifras verificadas a mano | 358 pruebas |
| Comportamiento en pantalla, en computadora y celular | 260 pruebas |
| Accesibilidad (norma WCAG 2.1 AA), en los tres modos de tema | 64 pruebas |
| Contraste de todos los colores, en claro y oscuro | 37 pares |
| Que ninguna cifra fiscal esté escrita a mano fuera de su archivo | Prueba dedicada |
| Que el manual no se desincronice de la herramienta | 6 pruebas |
| Seguridad: escaneo pasivo, dependencias, secretos e imagen | 4 herramientas |
Si algo queda en rojo, la versión no avanza.
Qué significa «no tiene dependencias» para ti
Tres cosas prácticas:
- Envejece despacio. Sin dependencias que se rompan entre versiones, la herramienta sigue funcionando sin mantenimiento constante.
- Es auditable. Todo el cálculo fiscal está en el propio código del proyecto, y el desglose en pantalla permite seguirlo paso a paso.
- No depende de que un servicio siga existiendo. No hay una interfaz externa que pueda apagarse y dejar la herramienta inservible.
Los parámetros fiscales viven aparte
Todas las reglas —porcentajes, límites, factores, plazos— están en un solo archivo versionado, separado del código que calcula. Ninguna cifra fiscal está escrita dentro de una fórmula.
Por eso, cuando cambie la iniciativa, actualizar la herramienta es tocar ese archivo y subir la versión, que es la que aparece al pie de cada pantalla. Y por eso dos resultados con distinta versión de parámetros no son comparables: se calcularon contra textos distintos.