hiparquia.dog — sitio F0-lite: Astro estático, cero JS, candado del protocolo en código
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
# hiparquia.dog — la casa
|
||||
|
||||
El sitio que las piezas prometen. Cada carrusel termina diciendo *«la ficha completa vive en
|
||||
la casa»* y cada pin lleva `hiparquia.dog` impreso; esto es la casa.
|
||||
|
||||
**Fase F0-lite del `9-1`.** La arquitectura dice que el corpus vive en Directus y las fichas
|
||||
en `ink.hiparquia.dog`. Directus todavía no está en pie, así que el corpus son archivos
|
||||
markdown y las fichas cuelgan de la raíz. **El esquema es el mismo contrato**: cuando Directus
|
||||
exista se cambia el `loader` de `src/content.config.ts` y nada más — las páginas no se enteran.
|
||||
|
||||
## Qué hay
|
||||
|
||||
```
|
||||
src/content/fichas/*.md el corpus. Una ficha pública por texto
|
||||
src/content.config.ts el esquema + EL CANDADO del protocolo
|
||||
src/pages/index.astro el manifiesto y el índice
|
||||
src/pages/ficha/[slug].astro la ficha, con su schema.org
|
||||
src/layouts/Base.astro cabeza, og:, tipografía
|
||||
src/styles/global.css dos tintas y nada más
|
||||
src/fuentes/ el MAESTRO de Commissioner (4 ejes, no se embarca)
|
||||
scripts/fuente.py deriva la fuente embarcable
|
||||
scripts/og.mjs fabrica las tarjetas al compartir
|
||||
scripts/verificar.mjs los seis escenarios adversos
|
||||
```
|
||||
|
||||
## El candado, en código
|
||||
|
||||
```js
|
||||
.filter(f => f.data.semaforo === 'verde' || f.data.semaforo === 'propio')
|
||||
```
|
||||
|
||||
Está en el índice **y** en `getStaticPaths`. Una ficha en ámbar o rojo no aparece en la lista
|
||||
**y su página no se construye**: no existe la URL. El `9-1 §2` dice que el protocolo deja de
|
||||
ser documento y se vuelve software; esto es esa línea.
|
||||
|
||||
## Nada se mueve
|
||||
|
||||
Ni una animación. La única transición del sitio es el color de un enlace bajo el cursor,
|
||||
120 ms lineal — retroalimentación, no gesto. La pregunta de `ioon-gesto §0.5` es *¿qué se
|
||||
pierde si esto no se mueve?*, y en un archivo de fichas la respuesta es: nada.
|
||||
|
||||
**No hay `font-weight` ni `letter-spacing` en ningún `:hover`.** Ensanchan el elemento y
|
||||
empujan a sus vecinos. Medido: el ancho del enlace no cambia, delta 0.00 px.
|
||||
|
||||
## Las dos fuentes de Commissioner, y por qué son dos
|
||||
|
||||
| | ejes | peso | dónde |
|
||||
|---|---|---|---|
|
||||
| **maestro** | `wght` `slnt` `FLAR` `VOLM` | 95,144 B | `src/fuentes/` — no se embarca |
|
||||
| **embarcable** | solo `wght` 100–900 | **36,400 B** | `public/` — se deriva |
|
||||
|
||||
**−61.7 % sin tocar un solo carácter.** El sitio nunca usa `slnt`, `FLAR` ni `VOLM`, así que
|
||||
los tres se fijan en 0 y desaparecen del binario. Los 230 glifos del subconjunto latino se
|
||||
quedan enteros: el corpus va a crecer con textos que todavía no existen, y recortar por los
|
||||
caracteres de hoy rompería los de mañana.
|
||||
|
||||
Es la misma partición que en los SVG: un maestro que lo conserva todo y un embarcable que solo
|
||||
lleva lo que la pieza usa.
|
||||
|
||||
## Qué se versiona y qué no
|
||||
|
||||
Se rastrea la fuente, no la salida — **pero solo cuando la salida se puede volver a fabricar
|
||||
donde hace falta.**
|
||||
|
||||
- **La fuente embarcable NO se versiona.** Se deriva dentro del propio `Dockerfile`; fontTools
|
||||
cabe en la imagen de construcción sin engordarla.
|
||||
- **Las tarjetas og SÍ se versionan.** Fabricarlas necesita Chromium, y meterlo en la imagen de
|
||||
construcción cuesta más de 300 MB para tres PNG que cambian una vez por ficha. Es una
|
||||
excepción con razón escrita, no un descuido. Se regeneran con `npm run tarjetas`.
|
||||
|
||||
## Las tarjetas al compartir
|
||||
|
||||
`serclin.mx` no tiene `og:image`, y por eso su enlace viaja desnudo por WhatsApp. Aquí van
|
||||
desde el primer día: 1200×630, una por ficha más la de la casa. **WhatsApp y Facebook no
|
||||
ejecutan JavaScript** — leen las etiquetas `og:` y nada más.
|
||||
|
||||
## Cómo se corre
|
||||
|
||||
```
|
||||
npm install
|
||||
npm run build:completo # fuente + tarjetas + astro build
|
||||
npm run verificar # los seis escenarios, contra dist/ servido en 127.0.0.1
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## Cómo se despliega
|
||||
|
||||
**El paso 2 no es opcional** (`ioon-verificar §1.1`): mientras Coolify no esté expuesto por
|
||||
Traefik con HTTPS, GitHub no tiene por dónde entregar el webhook. Un fix bien escrito estuvo
|
||||
68 días sin salir del repositorio de serclin por creer lo contrario.
|
||||
|
||||
1. `git push`
|
||||
2. **`Redeploy` manual en Coolify**
|
||||
3. **Verificar contra producción**, con dos comprobaciones que no mienten: que cambió el
|
||||
`last-modified` **y** que el HTML servido trae el texto nuevo. En este sitio el CSS va
|
||||
incrustado en el HTML, así que no hay hash de bundle que mirar: se comprueba el HTML.
|
||||
|
||||
Antes de nada: **`hiparquia.dog` tiene que resolver.** Los dos pines lo llevan impreso y no
|
||||
pueden publicarse hasta entonces.
|
||||
|
||||
## Pendientes
|
||||
|
||||
- DNS en Cloudflare + TLS por Traefik (`9-1 §1`).
|
||||
- Cuando haya más de ~20 fichas: paginación o índice por autor.
|
||||
- Cuando Directus esté en pie: cambiar el `loader`, mover a `ink.` y dejar redirecciones.
|
||||
- `ask.` (AnythingLLM) y la tienda son F1/F2 — nada de esto los bloquea.
|
||||
Reference in New Issue
Block a user