Rama de desarrollo experimental sobre el Oasis de epsylon, sin afiliacion con el proyecto original. Base: 0.9.5. Trae el modulo Karvan —salas efimeras en memoria con autodestruccion por TTL, chat que funciona sin JavaScript y llamadas de audio y video sobre WebRTC— con el enlace en el menu lateral por el mismo patron que el resto de modulos: renderKarvanLink calcado de renderPollsLink, entrada en modules_view y en la lista de /modules. Los estilos del modulo van en su propia hoja, styles/karvan.css, siguiendo el patron de highlight.css: asi se ve igual con cualquier tema, sin depender del tema movil. Sin servidores ICE de terceros: no hay STUN de fabrica, porque un STUN aprende la IP publica y el momento de cada llamada. Solo candidatos host salvo que se configure un TURN propio en oasis-config.json, con credenciales efimeras por el mecanismo REST de coturn. El codigo propio vive separado —views/fork/, backend/fork_routes.js, models/karvan_model.js y translations/fork/— de modo que sobre los ficheros de upstream solo hay enganches de una linea y cada version nueva se integra sin arrastrar nada. Respecto al arbol de Android: fuera el wrapper y main.js, que es su arranque; el tema vuelve a Dark-SNH y se restauran los modulos que en movil se recortan por peso. Verificado arrancando sin OASIS_MOBILE: nueve rutas OK, menu lateral de upstream con 27 grupos y el enlace de Karvan, cero rastro de la interfaz movil (ni hexagonos, ni topbar, ni barra inferior), y una sala creada y servida.
3.1 KiB
Guía de desarrollo de Oasis
Esta carpeta documenta cómo está construido Oasis por dentro, para que puedas entenderlo y extenderlo (por ejemplo, creando un módulo de juegos nuevo).
Está pensada para leerse en orden, pero cada archivo es autónomo.
Índice
-
01-red-ssb.md — Cómo funciona Oasis a nivel de red: Secure Scuttlebutt (SSB), secret-stack, multiserver, muxrpc, EBT, blobs, federación P2P, puertos y cifrado.
-
02-arquitectura-software.md — La arquitectura de software del backend: el patrón MVC casero (models / views / backend.js), el stack de dependencias, el "cooler", el flujo de una petición y cómo se interrelacionan los archivos.
-
03-modulos-y-juegos.md — Cómo está construido el módulo de juegos actual y la anatomía de un módulo en general.
-
04-tutorial-modulo-desde-cero.md — Tutorial paso a paso para crear un módulo nuevo desde cero (caso práctico: un módulo de juegos propio), con todos los puntos de integración.
-
05-mapa-funciones.txt — Gran mapa ASCII de cómo se relacionan las funciones lógicas entre archivos, la persistencia (SSB) y la media (blobs).
Conceptos en 30 segundos
Oasis es un cliente web de Secure Scuttlebutt (SSB). SSB es un protocolo social P2P, distribuido y federado: no hay servidor central; cada nodo tiene una copia local de un log append-only firmado criptográficamente, y los nodos se replican entre sí por gossip.
Oasis se compone de dos procesos:
┌─────────────────────────┐ ┌──────────────────────────┐
│ SBOT (nodo de red SSB) │ <─────> │ FRONTEND WEB (Koa/HTML) │
│ src/server/SSB_server │ unix │ src/backend/backend.js │
│ habla con otros peers │ socket │ habla con tu navegador │
└─────────────────────────┘ └──────────────────────────┘
puerto 8008 (SSB) puerto 3000 (HTTP)
- El sbot (
src/server/SSB_server.js) es el nodo SSB: se conecta a otros peers, replica feeds, sirve y descarga blobs. → 01-red-ssb.md - El frontend (
src/backend/backend.js) es un servidor HTTP en Koa que renderiza HTML puro (sin JS de navegador) y se conecta al sbot como cliente muxrpc por un socket Unix local. → 02-arquitectura-software.md
El patrón para cada funcionalidad ("módulo") es siempre el mismo:
navegador → backend.js (ruta) → *_model.js (lee/escribe SSB) → *_view.js (HTML) → navegador
Las rutas, líneas y nombres citados en estos documentos corresponden a la versión 0.8.1 del código. Si editas el código, vuelve a comprobar los números de línea con
grep.