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.
62 lines
3.1 KiB
Markdown
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`.
|