107 lines
4.7 KiB
Markdown
107 lines
4.7 KiB
Markdown
# 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.
|