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
/earthtoday, 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
- Every pressurised module is plotted, clickable, and panelled. 3 modules in V1 (Tianhe, Wentian, Mengtian). Each gets its own detail.
- Every module's panel mirrors the mission-panel pattern — OVERVIEW · GALLERY · LEARN tabs (matching
/missions,/moon,/mars,/iss). - The 3D model is interactively navigable. Drag to rotate, pinch to zoom, click any pressurised module or the robotic arm.
- The orbital context is preserved. From
/tiangong, the user can switch back to/earthand find Tiangong's current orbit. The two screens complement. - 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
/isspost-V1 pattern), not a binary view-mode flip.
Modules to plot (V1 list). All 3 pressurised modules + Chinarm:
| Module | Builder | Launch | Year | Function |
|---|---|---|---|---|
| Tianhe (天和) | CASC | Long March 5B Y2 | 2021 | Core module · life support · attitude control · crew quarters |
| Wentian (问天) | CASC | Long March 5B Y3 | 2022 | First experimental lab · primary EVA airlock · Chinarm base |
| Mengtian (梦天) | CASC | Long March 5B Y4 | 2022 | Second experimental lab · cargo airlock · external payload deployment |
| Chinarm | CAST | (delivered with Tianhe) | 2021 | 10 m robotic arm · separately pickable per ADR-041 pattern |
Visiting vehicles (mirrors /iss visitor pipeline). 2 currently-active vehicle types:
| Vehicle | Operator | Carrier | Type | Function |
|---|---|---|---|---|
| Shenzhou (神舟) | CMSA | Long March 2F | Crew (3-seat) | Crew rotation; lifeboat for Tiangong |
| Tianzhou (天舟) | CMSA | Long March 7 | Cargo | Pressurised 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
/issV1. - 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
/isspost-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.tsmirrorsiss-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. SamesetShadowFlags+cylinderBetweenhelpers used byiss-proxy-model.ts(extracted into a sharedstation-geometry.tsif both stations end up needing them). - Picking. Raycaster against the module group, same pattern as
/iss. Module meshes getuserData.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 asiss-visitors.json— Shenzhou + Tianzhou. - Locale overlays at
static/data/i18n/[locale]/tiangong-modules/[id].jsonandtiangong-visitors/[id].jsoncarrying{ name, description, function_detail }. Chinese (zh-CN) overlays land alongside en-US in V1.
- New file
- Image manifests. New
tiangong-galleries.jsonmirrors the existingiss-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=listfalls back to a non-3D module list (accessibility / low-end-device path), inherited from/iss's ADR-042 pattern. - Nav slot. Tentatively after
/issso 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=listfallback 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=tianheopens 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.