# 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`.