Skip to content

Commit 5803e99

Browse files
committed
Add parallel assembly guides and video embeds
1 parent d972003 commit 5803e99

7 files changed

Lines changed: 170 additions & 35 deletions

File tree

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
"""Attach temporary assembly-video players to the matching tutorial pages."""
2+
3+
from __future__ import annotations
4+
5+
from html import escape
6+
7+
from docutils import nodes
8+
from sphinx.application import Sphinx
9+
10+
11+
VIDEOS = {
12+
"build/assembly-tutorials/modules/mod-fdr-aseembly": {
13+
"title": "Feeder module assembly",
14+
"embed_url": "https://drive.google.com/file/d/1U7WHxCBrBH_LmIhVE-iPwYedeMLx_lZj/preview",
15+
"watch_url": "https://drive.google.com/file/d/1U7WHxCBrBH_LmIhVE-iPwYedeMLx_lZj/view?usp=drivesdk",
16+
},
17+
"build/assembly-tutorials/modules/mod-lgt": {
18+
"title": "Light ring module assembly",
19+
"embed_url": "https://drive.google.com/file/d/11ymhMf_vLa13IoAeG7u0pcYd7CdqgUvQ/preview",
20+
"watch_url": "https://drive.google.com/file/d/11ymhMf_vLa13IoAeG7u0pcYd7CdqgUvQ/view?usp=drivesdk",
21+
},
22+
"build/assembly-tutorials/modules/mod-pbg-assembly": {
23+
"title": "Photobeam gate assembly",
24+
"embed_url": "https://drive.google.com/file/d/1YcfWktCNrZLU985ME6mK09RCsFTdyBYW/preview",
25+
"watch_url": "https://drive.google.com/file/d/1YcfWktCNrZLU985ME6mK09RCsFTdyBYW/view?usp=drivesdk",
26+
},
27+
"build/assembly-tutorials/modules/mod-scr-assembly": {
28+
"title": "Screen module assembly",
29+
"embed_url": "https://drive.google.com/file/d/1W-CbucP4mVNRbWdahoSWfjjUbpiLWMX0/preview",
30+
"watch_url": "https://drive.google.com/file/d/1W-CbucP4mVNRbWdahoSWfjjUbpiLWMX0/view?usp=drivesdk",
31+
},
32+
}
33+
34+
35+
def _append_video(app: Sphinx, doctree: nodes.document, docname: str) -> None:
36+
video = VIDEOS.get(docname)
37+
if video is None or app.builder.format != "html":
38+
return
39+
40+
title = str(video["title"])
41+
embed_url = str(video["embed_url"])
42+
watch_url = str(video["watch_url"])
43+
44+
section = nodes.section(ids=["assembly-video-tutorial"])
45+
section += nodes.title(text="Assembly video")
46+
section += nodes.paragraph(
47+
text=(
48+
"Use this short visual walkthrough alongside the written instructions. "
49+
"The parts list, cautions, and checkpoints in this page remain essential."
50+
)
51+
)
52+
section += nodes.raw(
53+
"",
54+
(
55+
'<div class="assembly-video">'
56+
f'<iframe src="{escape(embed_url, quote=True)}" '
57+
f'title="{escape(title, quote=True)}" '
58+
'loading="lazy" allow="autoplay; fullscreen" allowfullscreen '
59+
'referrerpolicy="strict-origin-when-cross-origin"></iframe>'
60+
"</div>"
61+
),
62+
format="html",
63+
)
64+
65+
fallback = nodes.paragraph()
66+
fallback += nodes.Text("Player unavailable? ")
67+
fallback += nodes.reference(
68+
"",
69+
"Open the temporary video in Google Drive",
70+
refuri=watch_url,
71+
internal=False,
72+
)
73+
fallback += nodes.Text(".")
74+
section += fallback
75+
76+
note = nodes.note()
77+
note += nodes.paragraph(
78+
text=(
79+
"Temporary hosting: this Drive player will be replaced by the project's "
80+
"YouTube stream after publication; the released original will be archived "
81+
"on Zenodo. Google may request sign-in until public sharing is confirmed."
82+
)
83+
)
84+
section += note
85+
doctree += section
86+
87+
88+
def setup(app: Sphinx) -> dict[str, object]:
89+
app.connect("doctree-resolved", _append_video)
90+
return {
91+
"version": "1.0",
92+
"parallel_read_safe": True,
93+
"parallel_write_safe": True,
94+
}

‎docs/source/_static/custom.css‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
.assembly-video {
2+
aspect-ratio: 16 / 9;
3+
margin: 1rem 0;
4+
max-width: 56rem;
5+
overflow: hidden;
6+
width: 100%;
7+
}
8+
9+
.assembly-video iframe {
10+
border: 0;
11+
height: 100%;
12+
width: 100%;
13+
}

‎docs/source/build/index.md‎

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Build your own BEATBox
22

3-
This section gathers the practical build documentation for assembling a BEATBox.
3+
This section deliberately keeps two assembly-guide versions in parallel while the project team evaluates which experience to retain. Both describe the same device, but their structure and interaction model differ.
44

55
```{toctree}
66
:maxdepth: 2
@@ -12,20 +12,34 @@ fabrication
1212
video-tutorials
1313
```
1414

15-
## Recommended build path
15+
## Compare the two versions
1616

17-
1. Review the safety notes.
18-
2. Download the Master BOM and confirm every unresolved field for the hardware revision being built.
19-
3. Prepare 3D-printed and laser-cut parts.
20-
4. Build each module with the corresponding modular tutorial.
21-
5. Install the modules in the frame and use the interactive SOP as a bench checklist.
22-
6. Record deviations and validation notes during the build.
17+
::::{grid} 1 2 2 2
18+
:gutter: 3
19+
20+
:::{grid-item-card} Version A — Interactive SOP
21+
Use the single-page, step-by-step checklist during a bench build. It is optimized for sequential progress and quick validation.
22+
23+
<a href="../../beatbox-assembly-sop.html">Open the interactive Assembly SOP</a>
24+
:::
25+
26+
:::{grid-item-card} Version B — Modular Sphinx guide
27+
Use the six rendered tutorials from `assembly-tutorials`, with the versioned BOM and the available videos embedded on their matching module pages.
2328

24-
## Interactive SOP
29+
{doc}`Open the modular Sphinx guide <assembly-tutorials/tutorials_index>`
30+
:::
2531

26-
Use the standalone checklist during hands-on assembly:
32+
::::
2733

28-
<a href="../../beatbox-assembly-sop.html">Open the interactive BEATBox Assembly SOP</a>
34+
Neither version is removed during this comparison period. For useful feedback, complete a build primarily with one version and record where its navigation, level of detail, or media support helps or blocks you.
35+
36+
## Common preparation
37+
38+
1. Review the safety notes.
39+
2. Download the Master BOM and confirm every unresolved field for the hardware revision being built.
40+
3. Prepare 3D-printed and laser-cut parts.
41+
4. Choose one of the two guide versions above for the evaluation build.
42+
5. Record deviations and validation notes, including the guide version used.
2943

3044
## Versioned sources
3145

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,29 @@
11
# Video tutorials
22

3-
Six short 720p MP4 tutorials have been prepared to complement the written module guides. The written guides remain authoritative because they contain the full parts lists, cautions, checkpoints, and revision information.
3+
Six short 720p MP4 tutorials have been announced to complement the written module guides. Four are currently available in the temporary Google Drive handoff and are embedded directly in their matching Sphinx pages. The written guides remain essential because they contain the full parts lists, cautions, checkpoints, and revision information.
44

55
## Publication status
66

7-
The source videos are currently in the team's OneDrive handoff folder. Public URLs have not yet been assigned, so the private links are intentionally not embedded in this public manual.
7+
The current Drive links are temporary. They will be replaced by project-controlled YouTube links for playback, while released originals should be archived on Zenodo with durable identifiers. Google may request sign-in until public sharing is confirmed.
88

99
| Tutorial | Written guide | Public video |
1010
| --- | --- | --- |
11-
| Frame and enclosure | {doc}`Open guide <assembly-tutorials/modules/mod-frm-assembly>` | Pending |
12-
| Water bottle mount | {doc}`Open guide <assembly-tutorials/modules/mod-bmt-assembly>` | Pending |
13-
| Feeder module | {doc}`Open guide <assembly-tutorials/modules/mod-fdr-aseembly>` | Pending |
14-
| Light ring | {doc}`Open guide <assembly-tutorials/modules/mod-lgt>` | Pending |
15-
| Photobeam gate | {doc}`Open guide <assembly-tutorials/modules/mod-pbg-assembly>` | Pending |
16-
| Screen module | {doc}`Open guide <assembly-tutorials/modules/mod-scr-assembly>` | Pending |
11+
| Frame and enclosure | {doc}`Open guide <assembly-tutorials/modules/mod-frm-assembly>` | Awaiting upload |
12+
| Water bottle mount | {doc}`Open guide <assembly-tutorials/modules/mod-bmt-assembly>` | Awaiting upload |
13+
| Feeder module | {doc}`Open guide with video <assembly-tutorials/modules/mod-fdr-aseembly>` | [Temporary Drive file](https://drive.google.com/file/d/1U7WHxCBrBH_LmIhVE-iPwYedeMLx_lZj/view?usp=drivesdk) |
14+
| Light ring | {doc}`Open guide with video <assembly-tutorials/modules/mod-lgt>` | [Temporary Drive file](https://drive.google.com/file/d/11ymhMf_vLa13IoAeG7u0pcYd7CdqgUvQ/view?usp=drivesdk) |
15+
| Photobeam gate | {doc}`Open guide with video <assembly-tutorials/modules/mod-pbg-assembly>` | [Temporary Drive file](https://drive.google.com/file/d/1YcfWktCNrZLU985ME6mK09RCsFTdyBYW/view?usp=drivesdk) |
16+
| Screen module | {doc}`Open guide with video <assembly-tutorials/modules/mod-scr-assembly>` | [Temporary Drive file](https://drive.google.com/file/d/1W-CbucP4mVNRbWdahoSWfjjUbpiLWMX0/view?usp=drivesdk) |
17+
18+
[Open the temporary Google Drive folder](https://drive.google.com/drive/folders/15qdSVwi2WGLClNfwwK7sh3xtZT9da_ts).
1719

1820
## Publication requirements
1921

2022
- Keep the 720p MP4 originals as archival assets outside the Git repository.
21-
- Publish streamable copies on the project's approved public video host.
23+
- Publish streamable copies on the project's YouTube channel and archive released originals on Zenodo.
2224
- Use the naming convention in the [assembly documentation conventions](https://github.com/Open-BeatBox/assembly-tutorials/blob/main/conventions.md).
2325
- Provide one thumbnail, a descriptive title, captions or a transcript, and a public URL per video.
24-
- Add the corresponding URL near the relevant step in each written guide and in the table above.
26+
- Replace each temporary Drive `embed_url` and `watch_url` in `docs/source/_ext/assembly_videos.py` with the corresponding YouTube URLs and update the table above.
2527
- Verify playback on desktop and mobile before release.
2628

27-
Large MP4 files should not be committed directly to the website repository. If a long-term downloadable archive is needed, attach the originals to a versioned GitHub Release; use a streaming host for the website experience.
29+
Large MP4 files should not be committed directly to the website repository. Zenodo should hold the versioned archival copy; use YouTube for the website experience.

‎docs/source/conf.py‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
from __future__ import annotations
22

33
from pathlib import Path
4+
import sys
5+
6+
7+
sys.path.insert(0, str(Path(__file__).parent / "_ext"))
48

59
project = "BEATBox Documentation"
610
author = "NERB team"
711
copyright = "2026, NERB team"
812
release = "draft"
913

1014
extensions = [
15+
"assembly_videos",
1116
"myst_parser",
1217
"sphinx_design",
1318
]
@@ -29,6 +34,7 @@
2934
html_theme = "furo"
3035
html_title = "BEATBox Documentation"
3136
html_static_path = ["_static"]
37+
html_css_files = ["custom.css"]
3238
html_favicon = "../../site/public/favicon.png"
3339
html_logo = "../../site/public/images/beatbox-logo.png"
3440

‎site/BEATBOX_IMPACT_REDESIGN_TODO.md‎

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ This tracker lists completed repository/documentation cleanup work and the remai
164164

165165
## Phase 10 - Lizbeth assembly-documentation handoff and public release
166166

167-
Source handoff: the `assembly-tutorials` repository contains the Master BOM in CSV/XLSX, one enclosure guide, five sub-module guides, and six 720p MP4 tutorial videos supplied separately through the team's OneDrive folder.
167+
Source handoff: the `assembly-tutorials` repository contains the Master BOM in CSV/XLSX, one enclosure guide, five sub-module guides, and six announced 720p MP4 tutorial videos. Four videos are currently available in a temporary Google Drive handoff; final playback and archival locations remain YouTube and Zenodo respectively.
168168

169169
### Website and repository integration - Damien / Eric
170170

@@ -175,8 +175,10 @@ Source handoff: the `assembly-tutorials` repository contains the Master BOM in C
175175
- [x] Make the homepage `Build your Own` entry point open the consolidated build manual.
176176
- [x] Document that `assembly-tutorials` owns the editable BOM and module guides, avoiding duplicate sources.
177177
- [x] Pin `assembly-tutorials` as a Git submodule and render all six source guides directly inside Sphinx.
178+
- [x] Keep the interactive SOP and modular Sphinx rendering as two explicit alternatives for comparison.
179+
- [x] Embed the four delivered Drive videos on their matching Sphinx module pages without committing MP4 files.
178180
- [ ] Eric: approve the final information architecture and public video-hosting choice.
179-
- [ ] Damien: add the six public video URLs and thumbnails after they are delivered.
181+
- [ ] Damien: add the remaining two videos, then replace all temporary Drive IDs with YouTube URLs and add thumbnails.
180182

181183
### Master BOM release gate - Pierre
182184

@@ -202,14 +204,15 @@ Source handoff: the `assembly-tutorials` repository contains the Master BOM in C
202204

203205
### Video publication - Damien / Eric
204206

205-
- [ ] Copy the six source MP4 files out of the personal OneDrive handoff into project-controlled archival storage.
207+
- [ ] Collect all six source MP4 files in project-controlled staging storage; feeder, light ring, photobeam gate, and screen are currently visible in the temporary Drive folder.
206208
- [ ] Do not commit the approximately 1 GB video set to the website Git history.
207-
- [ ] Choose a public streaming host (project YouTube or PeerTube preferred) and retain downloadable originals in a versioned GitHub Release if required.
209+
- [x] Select project YouTube for public streaming and Zenodo for the versioned archival deposit/DOI.
210+
- [ ] Confirm every temporary Drive file is viewable without authentication while it is linked from the public site.
208211
- [ ] Rename each file using `<module-id>_<step>_<action>_<view>.mp4`.
209212
- [ ] Produce a thumbnail and captions or transcript for each video.
210213
- [ ] Confirm each video maps to one of: frame, water bottle mount, feeder, light ring, photobeam gate, or screen.
211-
- [ ] Add the public URL next to the relevant written steps and to `docs/source/build/video-tutorials.md`.
212-
- [ ] Test playback on desktop and mobile and confirm that no private OneDrive URL appears in the public site.
214+
- [ ] Replace the temporary Drive embeds with public YouTube URLs next to the relevant written steps and in `docs/source/build/video-tutorials.md`.
215+
- [ ] Test playback on desktop and mobile and confirm that no temporary or private Drive URL remains in the final public release.
213216

214217
### System validation - Zenneddine / project team
215218

‎site/content/build-and-code.md‎

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ hero:
88
title: "Build BEATBox module by module."
99
subtitle: "Start with the Master BOM, follow the versioned tutorials, then validate the complete system."
1010
primaryCta:
11-
label: "Open assembly tutorials"
12-
href: "/docs/manual/build/assembly-tutorials/tutorials_index.html"
11+
label: "Compare assembly guides"
12+
href: "/docs/manual/build/"
1313
secondaryCta:
14-
label: "Download the Master BOM"
15-
href: "https://github.com/Open-BeatBox/assembly-tutorials#bill-of-materials"
14+
label: "Open interactive SOP"
15+
href: "/docs/beatbox-assembly-sop.html"
1616
sections:
1717
- type: "steps"
1818
title: "Hardware build path"
@@ -34,11 +34,14 @@ sections:
3434
href: "/docs/beatbox-assembly-sop.html"
3535
ctaLabel: "Open checklist"
3636
- type: "links"
37-
title: "Assembly documentation"
37+
title: "Two assembly-guide versions"
3838
links:
39-
- label: "Modular tutorial index"
39+
- label: "Version A — Interactive Assembly SOP"
40+
href: "/docs/beatbox-assembly-sop.html"
41+
note: "A single sequential checklist optimized for use at the bench"
42+
- label: "Version B — Modular Sphinx guide"
4043
href: "/docs/manual/build/assembly-tutorials/tutorials_index.html"
41-
note: "Six written guides: enclosure plus five sub-modules"
44+
note: "The assembly-tutorials repository rendered as six module pages, with available videos"
4245
- label: "Assembly tutorial source repository"
4346
href: "https://github.com/Open-BeatBox/assembly-tutorials"
4447
note: "Canonical Markdown and BOM source"

0 commit comments

Comments
 (0)