OASIS_LINUX/docs/devs/architecture/00-README.md
SITO ddd2787b73 Oasis 0.9.5 con Karvan para escritorio
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.
2026-08-19 00:35:08 +02:00

62 lines
3.1 KiB
Markdown

# 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
1. **[01-red-ssb.md](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.
2. **[02-arquitectura-software.md](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.
3. **[03-modulos-y-juegos.md](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.
4. **[04-tutorial-modulo-desde-cero.md](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.
5. **[05-mapa-funciones.txt](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](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](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`.