This is the source of the nuclear energy public-education website whatisnuclear.com. The site was founded in 2007 and has been built over the years. It is now on github to encourage collaboration with other nuclear experts who want to contribute to public education. More about us.
We welcome pull requests for basic fixes and small changes of any kind. If you want to contribute something major, it's best to contact us first to discuss the content and tone. We definitely want stuff from you but don't want you to spend a bunch of time on something that we don't think is right for our site. All contributions you make will retain your copyright but you will grant whatisnuclear.com a irrevocable and perpetual license to use it. It will also be licensed CC-BY-NC.
We look forward to working with you!
The site is built with Jekyll, which converts the source material you see here into the actual HTML that gets pushed live. Some of our pages here are in Markdown and others are still in HTML (we're slowly converting to Markdown to make collaborating/editing easier). At the moment, not everything needed to render the page is in this git repository (we excluded some third-party dependencies like fonts and themes) so you may have trouble rendering it at first. But if you had all the dependencies, you could just run:
bundle install
bundle exec jekyll build
or
bundle exec jekyll serve
you can test out your changes before submitting them.
For linting, do:
npm install prettier
npm install --save-dev @shopify/prettier-plugin-liquid
Then lint in your editor or with:
npx prettier -w .
CI runs on a self-hosted Forgejo instance using a Docker-in-Docker runner. The
build-and-validate job uses a custom image built from .forgejo/Dockerfile.ci.
After modifying the Dockerfile (e.g. bumping the Ruby version or adding dependencies), rebuild and push the image:
docker build -t url-to-forge/whatisnuclear-ci:latest -f .forgejo/Dockerfile.ci .
docker push url-to-forge/whatisnuclear-ci:latest
The catalog of historical nuclear films lives in _data/videos.yml and renders
to old-videos.md and museum.md. Every entry has a
stable id (the slugified title) that everything else keys off. After adding
entries, run uv run _scripts/add_video_ids.py to fill in the ids of any new
ones; it leaves existing ids alone, so it is safe to re-run.
To exhibit a film on an announcement post:
{% include film.liquid id="astr-tower-experiment" %}
That renders the video embed, the catalog description, a backlink to the catalog
entry, and the transcript if there is one. Pass caption="..." to add a figure
caption, or parts="video,transcript" to render only some of it on a page that
supplies its own prose. List the films a post announces in its front matter:
films:
- astr-tower-experiment
so the museum and the catalog table can link back to the announcement.
Transcripts are plain .srt files in _data/transcripts/, named after the film
id. Drop one in and it shows up; there is no conversion step (see
_plugins/srt-transcripts.rb).