Un cliente Nostr web integrado en el framework JUX. Resumen de funcionalidades, soporte de NIPs y comparativa con otros clientes.
Cliente Web · Arquitectura Abierta · Self-hostedNoxtr es un cliente Nostr web integrado en el framework PHP JUX. Funciona como un módulo dentro de un sitio web auto-alojado, combinando el acceso al protocolo Nostr con funcionalidades del servidor como cuentas de usuario, hosting de direcciones Lightning y verificación de identidad NIP-05.
Está diseñado como una aplicación de página única sin frameworks JavaScript externos — vanilla JS con un helper DOM ligero (wquery).
Se ejecuta en tu propio servidor (Apache/nginx, PHP, MySQL/SQLite). Tú controlas tus datos, tu lista de relays y tus endpoints Lightning.
Sin React, sin Vue, sin npm, sin paso de compilación. JavaScript vanilla puro en un solo archivo. Criptografía vía noble-secp256k1 y noble-ciphers.
La verificación NIP-05 y las direcciones Lightning LNURL-pay se auto-configuran desde las cuentas de usuario del servidor.
Soporta extensiones de navegador NIP-07, clave privada nsec, NIP-46 Nostr Connect (firma remota con QR) y modo sólo lectura con npub.
Posibilidades de Implementación de Nostr (NIPs) soportadas por Noxtr:
| Kind | Descripción | Uso |
|---|---|---|
| 0 | Metadatos de perfil | Nombre, avatar, banner, bio, nip05, lud16 |
| 1 | Nota de texto | Contenido principal del feed, hashtags, menciones |
| 3 | Lista de contactos | Seguir/dejar de seguir, petnames, hints de relay |
| 4 | DM cifrado | AES-CBC con IV, descifrado vía NIP-07 o privkey |
| 5 | Eliminación | Borrar notas propias y mensajes de canal propios (kind 42) |
| 6 | Repost | Compartir notas |
| 7 | Reacción | Like/unlike en notas |
| 40 | Crear canal | Canal de chat público NIP-28 |
| 41 | Metadatos de canal | Nombre, descripción, imagen del canal |
| 42 | Mensaje de canal | Mensajes en canales públicos (eliminación propia vía kind 5) |
| 1984 | Reporte | Reportes de spam NIP-56 |
| 30023 | Artículo (NIP-23) | Contenido largo: mezclado en el feed con badge “Read”, vista completa con Markdown, composición de artículos |
| 9734 | Solicitud de Zap | Metadatos de pago Lightning |
| 9735 | Recibo de Zap | Confirmación de pago desde el servidor |
| 24133 | Nostr Connect | Firma remota NIP-46 |
Global, Siguiendo, Seguidores, Temas (suscripciones por hashtag) y Tendencias (ranking por engagement).
DMs cifrados con NIP-04 con hilos de conversación, caché en base de datos local y descifrado vía extensión.
Crear, unirse y chatear en canales públicos. Metadatos de canal, fijar canales, enlaces de invitación y configuración exclusiva del creador. Eliminación de mensajes propios (NIP-09).
Contenido largo (kind 30023) mezclado en el feed con badge “Read” y deduplicación. Vista completa con renderizado Markdown. Compositor con campos de título, resumen, imagen y etiquetas.
Vista completa de hilos con marcadores root/reply, conteo de respuestas, orden cronológico y enlaces permanentes.
Zaps NIP-57 con transferencias internas entre usuarios registrados y facturas externas vía BTCPay y LNURL-pay.
Infraestructura Lightning auto-alojada vía BTCPay Server. El endpoint LNURL-pay sirve facturas, crea solicitudes de pago BOLT11 y procesa recibos de zap (kind 9735) con firmas Schnorr del servidor. Los sats recibidos se acumulan en el balance del usuario para transferencias internas o retiro.
Búsqueda de texto NIP-50 con fallback multi-relay. Búsqueda de perfiles con @usuario. Detección de entidades npub/note/nevent.
Suscríbete a hashtags (#bitcoin, #nostr, etc.) y filtra tu feed. Temas sugeridos, activación masiva, filtro de tendencias.
Guarda notas como favoritos localmente. Silencia usuarios con reporte de spam NIP-56 opcional. Gestión de silenciados en ajustes.
Imágenes embebidas (carga diferida), reproductores de vídeo, embeds de YouTube/Vimeo. Detección de dominios caídos con reintento a las 24h.
Editar nombre, bio, avatar, banner. NIP-05 y dirección Lightning auto-configurados desde la cuenta del servidor.
Añadir/eliminar/activar relays. Estado de conexión en tiempo real. Reconexión con backoff exponencial. Rebalanceo de suscripciones.
Parsea y renderiza broadcasts de perfiles de redes mesh AR (ar_profile, ar_collaboration) como tarjetas visuales con avatar, ubicación y acciones sociales.
Una comparación imparcial de Noxtr frente a clientes Nostr establecidos. Cada cliente tiene fortalezas diferentes — esta tabla pretende ser factual, no promocional.
| Noxtr | Damus | Amethyst | Primal | Snort | Iris | Coracle | Nostur | |
|---|---|---|---|---|---|---|---|---|
| Plataforma | Web | iOS | Android | Web/iOS/Android | Web | Web/Multi | Web (PWA) | iOS/macOS |
| Código abierto | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Auto-alojado | ✓ | — | — | — | ✓ | ✓ | ✓ | — |
| Sin paso de compilación | ✓ | n/a | n/a | — | — | — | — | n/a |
| NIPs documentados | 17 | ~15 | 60+ | ~20 | 42 | ~15 | ~15 | ~15 |
| NIP | Noxtr | Damus | Amethyst | Primal | Snort | Iris | Coracle | Nostur | |
|---|---|---|---|---|---|---|---|---|---|
| 01 | Protocolo básico | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 02 | Lista de contactos | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 04 | DMs cifrados (legacy) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | lectura | ✓ |
| 05 | Identidad DNS | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 07 | Firmante del navegador | ✓ | n/a | n/a | ✓ | ✓ | ✓ | ✓ | n/a |
| 09 | Eliminación de eventos | ✓ | ~ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 10 | Hilos de respuesta | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 19 | Entidades Bech32 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 23 | Contenido largo (artículos) | ✓ | — | ✓ | ✓ | ✓ | — | — | — |
| 25 | Reacciones | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 28 | Canales públicos | ✓ | — | ✓ | — | ✓ | — | — | — |
| 44 | Cifrado versionado | ✓ | ~ | ✓ | — | ✓ | ✓ | ✓ | ✓ |
| 46 | Nostr Connect | ✓ | — | ~ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 50 | Búsqueda | ✓ | ~ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 57 | Zaps Lightning | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 65 | Metadatos de relays | ✓ | ✓ | ~ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Funcionalidad | Noxtr | Damus | Amethyst | Primal | Snort | Iris | Coracle | Nostur |
|---|---|---|---|---|---|---|---|---|
| DMs modernos (NIP-17/44) | — | ~ | ✓ | — | ✓ | ✓ | ✓ | ✓ |
| Wallet integrado | balance | Coinos | — | ✓ | — | Cashu | — | — |
| Búsqueda de perfiles (@user) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Canales públicos (NIP-28) | ✓ | — | ✓ | — | ✓ | — | — | — |
| Feed de tendencias | ✓ | — | ✓ | ✓ | ✓ | — | — | — |
| Suscripción a temas/hashtags | ✓ | — | ✓ | ~ | ~ | — | — | ~ |
| Hosting NIP-05 | ✓ | — | — | premium | pago | — | — | — |
| Hosting dirección Lightning | ✓ | — | — | ✓ | pago | — | — | — |
| Múltiples cuentas | logout/login | — | ✓ | — | ✓ | — | ✓ | ✓ |
| Contenido largo (NIP-23) | ✓ | — | ✓ | ✓ | ✓ | — | — | — |
| Comunidades (NIP-72) | — | — | ✓ | — | — | — | ✓ | — |
| Subida de archivos (NIP-96) | — | — | ✓ | — | ✓ | — | ✓ | — |
| Integración BTCPay Server | ✓ | — | — | — | — | — | — | — |
| Renderizado de perfiles AR | único | — | — | — | — | — | — | — |
Áreas donde Noxtr está por detrás de otros clientes:
| Componente | Tecnología |
|---|---|
| Frontend | JavaScript vanilla (IIFE único), helper DOM wquery |
| Backend | PHP (módulo del framework JUX) |
| Base de datos | MySQL o SQLite (SQL dual-compatible) |
| Servidor web | Apache (mod_rewrite) o nginx |
| Criptografía | noble-secp256k1 (BIP-340 Schnorr), noble-ciphers (XChaCha20-Poly1305), Web Crypto API (AES-CBC, HKDF) |
| Lightning | BTCPay Server (LNURL-pay, facturas BOLT11) |
| Almacenamiento | BD del servidor (contactos, temas, favoritos, DMs, relays, silenciados, canales) + localStorage/IndexedDB (claves, estado UI) |