Skip to content

PRD-011 — Tiangong Explorer

Orrery · Product Requirements · v0.1 · May 2026

Status: Draft Sources: PRD-010 (ISS Explorer) for the template; CMSA / CNSA module documentation; Long March 5B campaign reports Audiences: curious learner, STEM student, space enthusiast (PA §audiences) Promises: real mission data fully attributed, educational at every level (PA §promises) Principles: physics first, attribution is design (PA §principles) Why this is a PRD: Tiangong (天宫 — "Heavenly Palace") is the second continuously-crewed space station ever flown. It is the largest space-engineering programme outside the ISS partnership, fully assembled in 17 months (Apr 2021 → Oct 2022), and continuously occupied since June 2022. On /earth today, Tiangong is invisible. It deserves a peer screen — /tiangong — that mirrors the ISS Explorer treatment: a navigable 3D model where every module is clickable with its own builder, launch, and function history. The case is the same as /iss: any continuously-crewed orbital habitat is the kind of artefact that deserves to be opened up, not collapsed into a dot.

A student arrives at /tiangong. The T-shaped station rotates slowly in the centre of the screen — Tianhe core forward, Wentian and Mengtian forming the cross-bar, four solar arrays at the lab ends. They drag to rotate, reveal the docking ports on the back. They click Tianhe (天和). The panel opens: "Core Module · CASC (China Academy of Space Technology) · launched 2021 on Long March 5B Y2 · life-support, attitude control, and the station's first crew quarters." They click Wentian (问天). "First experimental lab · CASC · launched 2022 · houses the EVA airlock and the base of the Chinarm robotic arm." A capability ladder unfolds module by module.


§why

Tiangong is the modern parallel to the ISS partnership: a ~$8 B+ programme over a decade, a continuously-crewed habitat since June 2022, and the only currently operating sovereign space station outside the ISS coalition. Reducing it to "Tiangong · LEO · 380 km" on /earth (or worse, omitting it entirely) is an attribution failure of PA §principles ("attribution is design").

A dedicated /tiangong page lets us tell the actual story:

  • Every module has a builder. All three pressurised modules were built by CASC (China Academy of Space Technology); each has its own design heritage. Tianhe descends from the Mir-2 / DOS family through the cancelled Tiangong-1/2 prototypes; Wentian and Mengtian are clean-sheet labs.
  • Every module has a launch. Long March 5B launched all three. The 5B's distinctive un-controlled core-stage reentry pattern is itself part of the launch-history narrative.
  • Every module has a function. Tianhe is the core (life support + propulsion + crew quarters); Wentian houses the primary EVA airlock + experimental racks + Chinarm base; Mengtian adds research racks and a cargo airlock for external payload deployment.

A 3D model that lets users find and click each module turns Tiangong from an abstract dot into a physical artefact whose every part has a story — exactly as /iss does for the older station.


§audiences

The curious learner rotates the station to find the Mengtian cargo airlock. They click. They learn it's the first dedicated cargo airlock on a Chinese station — payloads can be deployed externally without a crewed EVA.

The STEM student uses /tiangong to ground "what's actually on the station." They click Wentian and learn it carries the primary EVA airlock and the base of the 10-metre Chinarm robotic arm. They click Tianhe and learn the core module hosts the regenerative ECLSS (closed-loop water + oxygen) that allows continuous occupancy.

The space enthusiast uses it as a complete reference: every module, every Long March 5B mission designation, every assembly step, every spacewalk count, every Shenzhou crew handover.


§promises

  1. Every pressurised module is plotted, clickable, and panelled. 3 modules in V1 (Tianhe, Wentian, Mengtian). Each gets its own detail.
  2. Every module's panel mirrors the mission-panel pattern — OVERVIEW · GALLERY · LEARN tabs (matching /missions, /moon, /mars, /iss).
  3. The 3D model is interactively navigable. Drag to rotate, pinch to zoom, click any pressurised module or the robotic arm.
  4. The orbital context is preserved. From /tiangong, the user can switch back to /earth and find Tiangong's current orbit. The two screens complement.
  5. Locale-aware per ADR-017. Chinese (zh-CN) is the natural primary locale alongside en-US.

§scope

In scope (V1)

Default view: 3D Tiangong model.

  • Centred, slowly rotating model of the T-shaped station (Tianhe core forward, lab modules forming the cross-bar, solar arrays angled).
  • Lit from a notional Sun direction so panels and modules cast shadows for depth.
  • Black space backdrop with optional Earth limb (per ADR-040 pattern, reuse 2k_earth_daymap.jpg).
  • INDEX drawer co-visible (per /iss post-V1 pattern), not a binary view-mode flip.

Modules to plot (V1 list). All 3 pressurised modules + Chinarm:

ModuleBuilderLaunchYearFunction
Tianhe (天和)CASCLong March 5B Y22021Core module · life support · attitude control · crew quarters
Wentian (问天)CASCLong March 5B Y32022First experimental lab · primary EVA airlock · Chinarm base
Mengtian (梦天)CASCLong March 5B Y42022Second experimental lab · cargo airlock · external payload deployment
ChinarmCAST(delivered with Tianhe)202110 m robotic arm · separately pickable per ADR-041 pattern

Visiting vehicles (mirrors /iss visitor pipeline). 2 currently-active vehicle types:

VehicleOperatorCarrierTypeFunction
Shenzhou (神舟)CMSALong March 2FCrew (3-seat)Crew rotation; lifeboat for Tiangong
Tianzhou (天舟)CMSALong March 7CargoPressurised cargo + propellant resupply

Same iss-visitors-shaped data file (tiangong-visitors.json) so the existing panel + picking + index-drawer code can render them with no new component types.

Panel structure (mirrors /iss and /missions):

  • OVERVIEW
    • Module name (Hanzi + Pinyin + English transliteration)
    • Builder + builder country
    • Operating agency
    • Launch vehicle + launch date + flight designation
    • First-of badge if applicable ("first cargo airlock on a Chinese station")
    • Function summary
    • Editorial description (Crimson Pro italic, ≤ 150 words)
  • GALLERY — 4–8 photos per module from CMSA / CNSA / Xinhua releases + Wikimedia Commons mirrors. Sourcing complications flagged in §technical (Wolf Amendment + provenance vetting).
  • LEARN — INTRO / CORE / DEEP tiered links:
    • INTRO: Wikipedia primer (en + zh)
    • CORE: CMSA / CNSA module fact sheet
    • DEEP: launch-campaign reports, EVA logs, scientific-payload publications

3D interaction (identical to /iss): drag to orbit, pinch to zoom, tap a module to open the panel + apply outline highlight, scale-pulse on selection, INDEX drawer toggleable, RESET VIEW + PAUSE/RESUME SPIN buttons.

Mobile. Same gesture set + bottom-sheet panel + bottom-sheet INDEX drawer, per /iss post-V1 layout.

Out of scope (V1)

  • Real-time Tiangong position over Earth. (That's /earth's responsibility once Tiangong is added to the LEO catalogue — separate work item.)
  • Crew rotation history (Shenzhou-12 onwards, expedition counts). V2.
  • Interior walk-through. Exterior-only in V1, same as /iss V1.
  • Mengtian's cargo airlock external-payload deployment animation. V2.
  • Decommissioning timeline. Tiangong's service life is officially 10 years with possible extensions; "what comes after" is V2.
  • Visiting-vehicles dock-undock animations. V2.

§design hints

Layout. Same as /iss: full-bleed 3D viewport, top-left HUD cluster with RESET VIEW · PAUSE/RESUME SPIN · INDEX, left-side INDEX drawer (300 px desktop / bottom sheet mobile), right-side detail panel.

Tokens. Same as the rest of the app:

  • Bebas Neue for module names + section titles.
  • Space Mono for technical labels.
  • Crimson Pro italic for editorial descriptions.
  • Agency colour for the builder badge — CMSA red (existing China-agency token where available; new token if not).

Visual style.

  • Module meshes: cylinders + end-caps, same proxy approach as /iss. Tianhe is the longest (~16.6 m) and largest-diameter module.
  • Materials: matte white pressurised hulls, gold MLI on docking-adapter sections, blue tint on solar panels, dark grey for Chinarm.
  • Tiangong's distinctive T-shape must read clearly: Tianhe along one axis, Wentian + Mengtian forming the perpendicular cross-bar (in real ISS-canonical orientation, the cross-bar is along the velocity vector). Camera framing should make the T silhouette unmistakable from the default angle.
  • Hover state: outline highlight via OutlinePass, matching the /iss post-V1 implementation (supersedes ADR-041's emissive relaxation).

Model authoring (V1).

  • Code-built proxy following the ADR-040 pattern. No NASA-3D Resources analogue is available for Tiangong (Wolf Amendment legally prohibits NASA cooperation with Chinese space programmes), so we cannot import a NASA model and simplify. A code-built proxy in tiangong-proxy-model.ts mirrors iss-proxy-model.ts.
  • V2 GLB swap path is open but harder than ISS — sourcing would require either (a) community models on Sketchfab with vetted commercial licenses, (b) CMSA / CNSA-released models if available, or (c) Blender-authored from scratch (~1 week). RFC-014 to settle.

§non-goals

  • Not a Kerbal Space Program clone. No physics simulation of orbital mechanics for visiting vehicles. The model is a static-but-rotatable artefact.
  • Not a real-time tracker. /earth tracks; /tiangong explores form.
  • Not a comprehensive station-history textbook. Each module's panel has ≤ 150 words of description. The deep history lives in the LEARN tab's external links.
  • Not a political comparison with ISS. /tiangong tells Tiangong's story on its own terms; cross-references to ISS are factual (e.g. "second continuously-crewed station") not editorial.

§technical considerations

  • 3D model. Code-built proxy in src/lib/tiangong-proxy-model.ts. Cylindrical pressurised modules, perpendicular cross-bar layout, 4 solar array wings at lab ends, separately-pickable Chinarm. Same setShadowFlags + cylinderBetween helpers used by iss-proxy-model.ts (extracted into a shared station-geometry.ts if both stations end up needing them).
  • Picking. Raycaster against the module group, same pattern as /iss. Module meshes get userData.stationId = 'tiangong' + userData.moduleId = 'tianhe' | 'wentian' | ….
  • Data shape.
    • New file static/data/tiangong-modules.json: array of { id, builder, builder_country, agency, launch_vehicle, launch_date, flight_designation, mass_kg, length_m, year_first_of?, status, credit, links[] }. Schema validated by ajv per ADR-019.
    • New file static/data/tiangong-visitors.json: same shape as iss-visitors.json — Shenzhou + Tianzhou.
    • Locale overlays at static/data/i18n/[locale]/tiangong-modules/[id].json and tiangong-visitors/[id].json carrying { name, description, function_detail }. Chinese (zh-CN) overlays land alongside en-US in V1.
  • Image manifests. New tiangong-galleries.json mirrors the existing iss-galleries.json. Sourcing complications: CMSA / CNSA images are typically released under PRC government open-content terms which differ from CC-BY; provenance vetting must coordinate with the credits-rollout work (ADR-046 / ADR-047) before galleries land.
  • Routing. New route /tiangong. URL params: ?module=[id] deep-links open with the panel pre-opened. ?view=list falls back to a non-3D module list (accessibility / low-end-device path), inherited from /iss's ADR-042 pattern.
  • Nav slot. Tentatively after /iss so the two stations form a "near-Earth crewed habitats" cluster: EXPLORE → MISSIONS → PLAN → FLY → EARTH → ISS → TIANGONG → MOON → MARS. RFC-014 to settle.

Performance budget

  • Initial JS payload addition: < 15 KB (route component is small; no GLB pipeline in V1).
  • 3D scene: ~1,500–2,500 station tris (3 modules + Chinarm + 4 wings + visiting fleet). Comfortably under any meaningful budget.
  • Animation frame target: 60 fps on mid-range mobile.

§definition-of-done

A locale is considered "Tiangong-shipped" when:

  • [ ] All 3 V1 modules + Chinarm render in the 3D model and are individually clickable.
  • [ ] Both visiting vehicles (Shenzhou + Tianzhou) render and are individually clickable, mirroring the ISS visiting fleet.
  • [ ] Each module has OVERVIEW · GALLERY · LEARN tabs populated.
  • [ ] Each module has at least one photo in GALLERY (build, deployment, or in-orbit).
  • [ ] Each module's LEARN tab has at least one INTRO link (Wikipedia) and one CORE link (CMSA / CNSA fact sheet).
  • [ ] Mobile (375 px) renders without horizontal scroll; pinch + drag work.
  • [ ] INDEX drawer co-visible with canvas (matches /iss post-V1 layout).
  • [ ] Outline-on-hover (OutlinePass) + scale-pulse-on-select (matches /iss).
  • [ ] Reset-camera + pause-spin HUD buttons present.
  • [ ] ?module=[id] deep-links open the panel pre-selected.
  • [ ] ?view=list fallback renders all panel content without WebGL.
  • [ ] No console errors on /tiangong or any deep-link.
  • [ ] Lighthouse accessibility ≥ 95.
  • [ ] E2e: tap a module → panel opens; close → module deselects; deep-link /tiangong?module=tianhe opens with Tianhe's panel; INDEX drawer toggles cleanly.
  • [ ] zh-CN + en-US locale overlays present for all modules + visitors. Other locales fall back to en-US per ADR-017.

§what comes after

V1.5: orbital-context inset (mini Earth + Tiangong's orbit). Tiangong added to /earth's real-time LEO catalogue. V2: Shenzhou + Tianzhou dock animations. V2: interior walk-through. V2: crew rotation timeline (Shenzhou-12 onwards). V2: external-payload deployment animation through Mengtian's cargo airlock. V3: future expansion — Tiangong is officially designed as a 3-module T but expansion modules have been hinted in CMSA roadmaps; if/when they fly, V3 plots them. V3: parallel-station context — when Axiom / Orbital Reef / other commercial LEO platforms become operational, an "active stations" overview screen could group them with /iss and /tiangong as peers.


Orrery · PRD-011 · Draft v0.1 · Update when scope or definition-of-done changes.

Orrery — architecture documentation · MIT · No tracking