escrivivir-co/simple-ssb-webrtc

github:repo · recuperado 2026-09-18 (api) · original · md
Citado en: 2037950081781956736

escrivivir-co/simple-ssb-webrtc

Simple implementation of webrtc as ssb plugin

JavaScript · ★ 0 · actualizado 2026-03-31T22:34:23Z · licencia —


SSB-WebRTC — Spec Posters Website

Audience: AI coding agents.
This README explains how to add new pages to the GitHub Pages website using
the poster-template system and the source documentation.


1. Repository Layout

ssb-webrtc/
├── web-rtc.md              ← SOURCE DOC: general theoretical plan (~1220 lines)
├── web-rtc-ext.md          ← SOURCE DOC: extension document (1078 lines, 10 EXT sections)
├── web-rtc.png             ← Diagram referenced by web-rtc.md
├── PLAN_OASIS.md           ← Implementation plan (referenced by web-rtc.md)
├── index.js                ← App entry point
├── package.json            ← NPM config
├── signaling/              ← Signaling module
├── README.md               ← This file
└── docs/                   ← GitHub Pages root (deploy from /docs on main branch)
    ├── index.html           ← Landing page — links to all posters and specs
    ├── poster-arq3.html     ← Poster: Arq. 3 (go2rtc + Mumble + node-datachannel)
    ├── poster-arq6.html     ← Poster: Arq. 6 (µStreamer + Mumble + node-datachannel)
    ├── poster-csi-usb.html  ← Poster: CSI vs USB cameras (EXT-1 + EXT-2)
    ├── poster-glosario.html ← Poster: Glossary — 40 terms (§4 + EXT-8)
    ├── poster-protocolo.html ← Poster: WebRTC & Mumble protocol stacks (§1.1–1.5 + §1.7)
    ├── poster-ecosistema.html ← Poster: Libraries & servers ecosystem (§1.6 + §1.7)
    ├── poster-arq1.html     ← Poster: Arq. 1 (go2rtc relay integral, CSI + USB)
    ├── poster-arq2.html     ← Poster: Arq. 2 (MediaMTX + rpicam, CSI zero-copy)
    ├── poster-arq4.html     ← Poster: Arq. 4 (ffmpeg→HLS estático, baseline)
    ├── poster-arq5.html     ← Poster: Arq. 5 (RPi-WebRTC native, solo CSI)
    ├── poster-retransmision.html ← Poster: Browser retransmission (§2.1 + EXT-4)
    ├── poster-template/     ← Shared CSS + HTML skeletons
    │   ├── fanzine.css       ← Shared fanzine B/W stylesheet (405 lines)
    │   ├── template.html     ← Poster skeleton (170 lines) — copy for new posters
    │   ├── spec-template.html← Spec sub-file skeleton (74 lines) — copy for new specs
    │   └── README.md         ← Template-specific instructions (CSS classes, placeholders)
    ├── spec-arq3/           ← Deep-dive specs for Architecture 3
    │   ├── go2rtc.html
    │   ├── mumble-bridge.html
    │   ├── oasis-proxy.html
    │   ├── datachannel.html
    │   └── deploy.html
    ├── spec-arq6/           ← Deep-dive specs for Architecture 6
    │   ├── ustreamer.html
    │   ├── mumble-bridge.html
    │   ├── oasis-proxy.html
    │   ├── datachannel.html
    │   └── deploy.html
    ├── spec-arq1/           ← Deep-dive specs for Architecture 1
    │   ├── go2rtc.html
    │   └── deploy.html
    ├── spec-arq2/           ← Deep-dive specs for Architecture 2
    │   ├── mediamtx.html
    │   └── deploy.html
    ├── spec-arq5/           ← Deep-dive specs for Architecture 5
    │   ├── rpi-webrtc.html
    │   ├── media-proxy.html
    │   └── deploy.html
    └── spec-csi-usb/        ← Deep-dive specs for CSI vs USB
        ├── pipeline.html
        └── impact.html

2. Source Documentation

The website content is derived from two markdown files at the repo root:

web-rtc.md — General Theoretical Plan

Covers WebRTC fundamentals and SSB/Oasis-specific application:

web-rtc-ext.md — Extension Document (10 EXT Sections)

Extends web-rtc.md without repeating it (DRY patch):

What Has Been Converted So Far

Source SectionWebsite PageStatus
§2.2 Comparativa + EXT-7 Decision matrixposter-decision.html✅ Done
§2.2 Arq. 3 + §3 Camino C + EXT-5Cposter-arq3.html + spec-arq3/ (5 files)✅ Done
EXT-10B Arq. 6 + EXT-9poster-arq6.html + spec-arq6/ (5 files)✅ Done
§1.1–1.5 Protocol stacks + Mumbleposter-protocolo.html✅ Done
§1.6 + §1.7 Ecosystem & alternativesposter-ecosistema.html✅ Done
§2.1 Retransmission alternativesposter-retransmision.html✅ Done
EXT-1/EXT-2 CSI vs USBposter-csi-usb.html + spec-csi-usb/ (2 files)✅ Done
EXT-3/EXT-5D RPi-WebRTC (Arq. 5)poster-arq5.html + spec-arq5/ (3 files)✅ Done
§2.2 Arq. 1 (go2rtc) + EXT-5Aposter-arq1.html + spec-arq1/ (2 files)✅ Done
EXT-5B Arq. 2 (MediaMTX)poster-arq2.html + spec-arq2/ (2 files)✅ Done
§2.2 Arq. 4 (ffmpeg→HLS)poster-arq4.html✅ Done
EXT-7 Decision matrixposter-decision.html✅ Done
§4 + EXT-8 Glossaryposter-glosario.html✅ Done

3. How to Create a New Poster Page

Step 1 — Choose Source Material

Read web-rtc.md and/or web-rtc-ext.md. Pick an unconverted section from the table above (or a new one the user requests).

Step 2 — Copy the Poster Skeleton

cp docs/poster-template/template.html docs/poster-arqN.html

Step 3 — Fix the CSS Path

The template has href="fanzine.css" (for files inside poster-template/).
For a poster at docs/ root level, change it to:

<link rel="stylesheet" href="poster-template/fanzine.css">

Step 4 — Replace All {{PLACEHOLDERS}}

Search-and-replace these in the new file:

PlaceholderWhat to Put
{{TITLE}}Browser tab title
{{STAMP}}Top-right stamp label (e.g. "SOLAR NET HUB")
{{POSTER_NAME}}Big <h1> name (e.g. "Arq. 5")
{{SUBTITLE}}Main components list
{{DESCRIPTION}}Short one-line description
{{SOURCE_REF}}Source reference (e.g. "web-rtc-ext.md · EXT-5D")
{{DEVICE}}Hardware target (e.g. "RPi 3B")
{{STACK}}Stack summary for the footer
{{ONE-LINE TAGLINE}}Callout phrase

Fill in the content sections (architecture diagram, component cards, specs table,
troubleshooting, etc.) using information from the source markdown.

Step 5 — Create Spec Sub-Files

For each major component, create a deep-dive spec:

mkdir -p docs/spec-arqN
cp docs/poster-template/spec-template.html docs/spec-arqN/component.html

In each spec file:

Step 6 — Link Specs from the Poster

In poster-arqN.html, inside the ☞ Deep-Dive Specs cutout, add:

<a class="deep-link" href="spec-arqN/component.html">Component — short description</a><br>

Step 7 — Update the Landing Page

Edit docs/index.html — add a new <div class="poster-card"> block following the
existing pattern (Arq. 3 and Arq. 6 are examples). Include:


4. Design Constraints

These apply to all pages:

ConstraintValue
AestheticFanzine B/W — Courier New, black on white, no color, recortable
LanguageSpanish (content language matches source docs)
CSSAlways link to poster-template/fanzine.css — never inline full styles
JSZero JavaScript — HTML/CSS only
Target deviceRPi 3B · BCM2837 · 1 GB LPDDR2 · VideoCore IV · Solar 22W
OS stackYocto Poky 4.3.4 → Docker → Debian Bookworm
AppOasis :3000 (Node.js / SSB) · zero JS in browser
Audiomurmurd :64738 (Mumble) · already installed

5. CSS Classes Reference

Full reference is in docs/poster-template/README.md. Key classes:

Layout: .header, .stats-bar, .cols > .col, .cutout, .diagram-wrap + .diagram, .callout, .washi, .footer

Components: .card + .card-title + .card-body + .card-port

Typography: .kw (keyword black), .kw-inv (keyword white-on-black), .hl-box (highlight box)

Info boxes: .tip, .warn, .key-concept

Navigation: .deep-link (spec links), .nav-back (back to poster link)

Decoration: .tape (.tape-tl, .tape-tr), .tilt-l, .tilt-r

Commands: .cmd + .prompt

Tables: .tbl

Collapsible: <details> + <summary> (styled automatically)


6. Naming Conventions


7. Checklist for Adding a New Page

Escrivivir · Scriptorium Skins · Animus Iocandi · Aleph Cero · F.A.R.O. · Material transmedia para agentes del juego ARG · AIGPL · Repositorio