Dispatches from the neurogenic niche. Cells, sequences, and cephalopods.
The lab blog of the Goff Lab at the Johns Hopkins School of Medicine. Built with Nikola and deployed to GitHub Pages.
Live site: https://gofflab.github.io/fons_voyage/
The environment is defined in environment.yml and managed with
conda / mamba.
Miniforge (which bundles
mamba + conda-forge defaults) is the recommended installer.
# create the env
mamba env create -f environment.yml # or: conda env create -f environment.yml
# activate it (run this each new shell)
mamba activate fons_voyage
# later, after pulling changes to environment.yml
mamba env update -f environment.yml --prunenikola new_post -t "My title" # new Markdown post under posts/
nikola new_post -f markdown -t "Title" # explicit format
nikola new_page -t "About" # new standalone page
nikola build # build site into output/
nikola serve -b # build + serve locally on :8000
nikola check -l # check for broken links
nikola auto # build on file change + livereloadThe built site lives in output/ (gitignored).
- Markdown posts go in
posts/*.md. - reStructuredText in
posts/*.rst. - Jupyter notebooks in
posts/*.ipynb(rendered directly). - Front-matter (Markdown) lives in a top-of-file HTML comment — see
posts/welcome-aboard.mdfor the canonical example.
Equations use KaTeX (USE_KATEX = True). Wrap inline math in $...$
and display math in $$...$$ after enabling KATEX_AUTO_RENDER (see
conf.py for the snippet).
A child theme fonsvoyage lives in themes/fonsvoyage/, inheriting from
the bundled bootblog4. The only template override is base.tmpl (to
inject the tagline under the title). All visual styling is in
files/assets/css/custom.css (the "Deep Ocean" palette).
To tweak colors, edit the CSS variables at the top of that file:
:root {
--fv-deep: #0d4d5e; /* primary teal */
--fv-coral: #e07a5f; /* link accent */
/* ... */
}Comments are powered by giscus, which stores each comment thread as a GitHub Discussion in this repo. To activate (one-time):
- Settings → General → Features → Discussions (enable).
- Install the giscus GitHub App on
gofflab/fons_voyage. - The Discussion category, repo IDs, and mapping mode are already set
in
conf.pyunderGLOBAL_CONTEXT["giscus_config"]. To change them later (e.g. switch category), regenerate the config at giscus.app and paste the newdata-*values into that dict.
Comments inherit the visitor's light/dark preference automatically
(data-theme: preferred_color_scheme).
Pushes to main trigger .github/workflows/deploy.yml:
- Provision a micromamba env from
environment.yml(cached between runs). - Run
nikola build. - Upload
output/as a Pages artifact. - Deploy to GitHub Pages.
In the repo on github.com:
- Settings → Pages → Source: select GitHub Actions.
- Settings → Actions → General → Workflow permissions: ensure "Read and write permissions" is enabled (or rely on the per-job permissions in the workflow).
- Push to
main— the first deployment will provision the site at https://gofflab.github.io/fons_voyage/.
To use a custom domain (e.g. fonsvoyage.org):
- Add a
CNAMEfile infiles/containing just the domain. - Update
SITE_URLinconf.py. - Configure DNS (ALIAS / CNAME →
gofflab.github.io). - Enable HTTPS in Settings → Pages.
.
├── conf.py # Nikola site config
├── posts/ # blog posts (.md / .rst / .ipynb)
├── pages/ # standalone pages (.md / .rst / .ipynb)
├── images/ # source images (resized at build time)
├── files/ # raw files copied verbatim to output/
│ └── assets/css/custom.css # Deep Ocean palette
├── themes/fonsvoyage/ # custom child theme
├── output/ # build output (gitignored)
└── .github/workflows/ # GitHub Actions