Un nsite que se edita a sí mismo. Un solo archivo HTML que se edita y se vuelve a publicar por su cuenta, alojado en Nostr.
Abre la página, inicia sesión con tu clave y escribe encima. El documento serializa su propio DOM, envía esos bytes a un servidor Blossom como un blob direccionado por su contenido y vuelve a publicar el manifiesto nsite NIP-5A que apunta a él. Quien cargue la página después recibe un documento estático normal con tus cambios ya dentro.
En todo ese ciclo no hay ningún servidor que tengas que mantener tú. Los relays guardan el manifiesto, los servidores Blossom guardan los bytes y el navegador hace el resto. La propiedad es un par de claves, así que quién puede editar esta página no es una fila en la base de datos de otro.
La página clona su propio DOM, lo limpia y serializa el documento entero.
Esos bytes van a un servidor Blossom como un blob direccionado por su propio sha256.
Un evento nsite reemplazable asocia la ruta con ese hash. Publicarlo es el despliegue.
Esta página que estás leyendo es uno de esos documentos. Funciona con nsite-clay y se guarda igual.
Un nsite es alojamiento web. No son notas de formato largo, sino archivos HTML enteros. Un nsite no es más que eso.
nsite-clay le añade una cosa: la página se edita y se actualiza sola, así que el CMS vive dentro del HTML estático en lugar de detrás de él.
Lo que cambias es el DOM. Haz clic por la página y edita lo que quieras, o
abre el inspector de DOM del navegador y cámbialo desde ahí; a la página le da igual. La
versión nueva se sube a tus servidores Blossom y se vuelve a publicar un evento
reemplazable que dice a qué hash de Blossom apunta ahora / o
/about-us. Cualquier gateway de nsites lo renderiza.
Un atributo dice de quién es el archivo, otro marca dónde se puede escribir y una etiqueta de script hace el resto.
<!DOCTYPE html> <html lang="en" autosave nc:owner="npub1…"> <head><meta charset="utf-8"><title>Notes</title></head> <body> <h1 editable="single-line">My notes</h1> <div editable> <p>Type anything here.</p> </div> <script src="/nsite-clay-c3ac5914.js"></script> </body> </html>
Guárdalo y abre el archivo en un editor de texto: tus palabras están dentro del HTML. El DOM es la base de datos, no hay otro sitio donde pueda vivir el estado.
Marca un contenedor con editable y se convierte en texto
enriquecido para el propietario y en marcado normal para los demás.
Enter empieza un párrafo nuevo. Al seleccionar texto aparece una barra flotante cuyo primer control es un menú de bloque: párrafo, títulos 1 a 3, cita y bloque de código.
Los atajos de teclado funcionan como esperarías, y escribir
# , - o > al principio de una
línea, también.
Lo que llega al archivo es marcado que podría haber escrito una persona a mano. Ni la barra de herramientas ni la basura que sueltan los navegadores al ejecutar comandos de edición acaban guardadas.
Una plantilla no es una combinación de colores. Cada una es una pequeña aplicación que resulta ser un solo archivo: lee de los relays, tiene controles y en varias quien la visita puede hacer algo. La página puede tener el aspecto que quieras, porque debajo no hay nada que decida cómo tiene que ser una página.
Muro de fotos
Cientos de imágenes de un npub, sobre un lienzo que arrastras y acercas. Tres disposiciones intercambiables.
Lista de enlaces
Un linktree que editas en la propia página. Añade un enlace, quita otro, pon una dirección de zaps.
Registro de canal
Una página a la que sigues añadiendo líneas. Inicia sesión y abajo aparece el editor.
Invitación a un evento
Los datos en grande, legibles desde el otro lado de la sala, y un archivo de calendario que el visitante descarga.
Archivo de texto
Setenta y nueve columnas monoespaciadas y reglas ASCII, con la forma de los viejos zines.
Bajo peso
Tipografías del sistema y lo mínimo de todo lo demás. Mide e imprime su propio peso de transferencia.
Hay un documento vivo publicado con una clave desechable, y la clave es pública a propósito. Ábrelo, pulsa Iniciar sesión, pega el nsec y edita la página. Al guardar reescribes el documento real para todo el mundo.
Cualquiera puede reescribir esa página, así que lo que encuentres ahí son las sobras de otros. No pegues nunca una clave que te importe en una página que no hayas publicado tú.
La CLI publica la primera versión. A partir de ahí la página se guarda sola, y solo vuelves a ella para los cambios que hagas fuera del navegador.
# crea la carpeta de un sitio y genera una clave para él npx nsite-clay init mysite # publícalo npx nsite-clay deploy mysite --sec=nsec1… # o deja la clave fuera de esta máquina y firma con un bunker npx nsite-clay deploy mysite --bunker="bunker://…"
Tu sitio queda en https://<npub>.nsite.lol/. Los sitios
con nombre reciben su propio subdominio, cada guardado deja una versión permanente con su
propia URL y cualquier gateway NIP-5A sirve el mismo sitio, así que puedes apuntar un CNAME
a uno de ellos para tener dominio propio.
Los recursos se publican en rutas que llevan su hash de contenido, y cada documento vigila su propio manifiesto y se recarga cuando aparece una versión más nueva. Nadie tiene que saber qué es una recarga forzada.
La mayoría de las páginas hechas con esto las construirá un agente y no una persona a mano, así que el proyecto trae instrucciones para uno. Apunta tu agente de código a ese archivo y pídele la página que quieras.
Explica qué preguntarte, cómo elegir y retocar una plantilla, cómo poner la
página en línea con un firmante remoto —en lugar de con la clave en crudo— y las pocas
cosas que se tuercen. Enlaza la documentación en vez de repetirla, y sirve como
AGENTS.md en un proyecto construido sobre nsite-clay.
Un gateway resuelve tu manifiesto y sirve los archivos. Todos leen los mismos eventos, así que tu sitio no depende de ninguno en concreto. Si uno se cae, cambias el nombre de host.
npm run devnet
levanta uno en tu propia máquina.