Live version: https://openspacecode.github.io/CCSDS-Viewer/
Quick-reference viewer for a layered space link stack — Space Packet, TM / TC SDLP, SDLS and SDLS Extended Procedures — built from the CCSDS Blue Books. Frame diagrams, field reference pages, a Frame Builder, a Frame Decoder and printable one-page cheat sheets.
To use it offline, open CCSDS-protocol-viewer.html in a browser. It is a single self-contained file: no server and no network needed.
The HTML file is generated — edit src/, then rebuild. Needs Node ≥ 21, no dependencies.
npm run build # src/ + vendor/ → CCSDS-protocol-viewer.html
npm test # decoder test vectors + smoke tests (also fails if the HTML is stale)
npm run site # what GitHub Pages publishes → _site/: the viewer + a reference page per protocolsrc/
index.html page template; pulls files in with <!--#include path -->
summary.html what the page says without JavaScript, for readers and search engines
views/ markup per view (sidebar, diagrams, builder, decoder, field page, …)
styles/ design-system CSS
protocols/ per protocol: field reference pages, maps, builder + decoder specs
lib/bits.js octet/bit helpers for the decoder
lib/bluebooks.js revision of each Blue Book, and links to the page of a reference
lib/bluebook-pages.js generated: section → PDF page (tools/bluebook_pages.py)
lib/search.js field search (Ctrl+K): indexing, value matching, ranking
lib/session.js keeps the page across a refresh (sessionStorage)
lib/profile.js mission profile: schema, validation, JSON, layout (localStorage)
component.js state, navigation and renderVals() — the glue
vendor/ React, dc-runtime, fonts and the self-unpacking bundle shell (not edited)
tests/ node:test suites
build.mjs the bundler
site.mjs the published site: generates the reference pages from the viewer's field tables
Each protocol's cheat sheet (*_SHEET in src/protocols/) is curated text; npm test checks its fields and references, but not that it still fits one page. After changing a sheet or src/views/cheat.html, print the fullest case (TM with a mission profile that uses SDLS) and check the page count.
The scripts in src/ are plain scripts that share one scope (no modules), in the order listed at the bottom of src/index.html. Reference vendor files as asset:<path>, for example url("asset:fonts/barlow-400-latin.woff2").