No description
  • Astro 37.4%
  • CSS 29.7%
  • TeX 24.2%
  • JavaScript 6.2%
  • TypeScript 2.5%
Find a file
Kevin Bonham 015163c26e
Some checks failed
Deploy bonhamlab.bio / build-and-deploy (push) Failing after 11s
Remove tasks
2026-07-31 07:55:30 -04:00
.forgejo/workflows add build action 2026-06-23 14:26:16 -04:00
astro-site Remove tasks 2026-07-31 07:55:30 -04:00
branding homepage 2026-06-18 22:12:55 -04:00
.gitignore Initial commit 2026-06-18 15:16:35 -04:00
README.md Initial commit 2026-06-18 15:16:35 -04:00

bonhamlab-web

Source for bonhamlab.bio — the Bonham Lab website at Tufts Medical Center.

Built with Astro. Deployed to Hetzner via Forgejo Actions.

Repo layout

branding/
  design-tokens.json     # Single source of truth for colors, type, spacing
  tokens-to-css.js       # Generates astro-site/src/styles/tokens.css at build time
  logo/lab-logo.svg      # SVG logo (currentColor, theme-aware)

astro-site/
  src/
    content/
      people/*.md        # Lab member profiles
      projects/*.md      # Research project pages
      publications/
        references.bib   # Zotero export — source for the publications page
    pages/               # Astro routes (people, projects, publications, services)
    components/          # Shared Astro components
    layouts/Base.astro   # Root layout (fonts, theme toggle, nav)
    styles/global.css    # Global styles (fonts, reset, utilities)
    plugins/             # Custom remark/rehype plugins
    utils/bibliography.ts
  public/
    fonts/               # Self-hosted IBM Plex woff2 subsets
    people/              # Headshot images

Development

cd astro-site
npm install
npm run dev        # generates tokens.css, then starts dev server at localhost:4321
npm run build      # production build → astro-site/dist/
npm run preview    # serve the built site locally

Adding content

Content is edited as Markdown with YAML frontmatter. No HTML required.

People

Add astro-site/src/content/people/<slug>.md:

---
name: "Jane Smith"
title: "Postdoctoral Fellow"
vitae: "One-line bio"
email: "jane.smith@tufts.edu"
github: "janesmith"          # optional
portrait: "smith_headshot.jpg"  # filename in public/people/
joined: 2024-09-01
alumn: false
---
Optional longer bio in Markdown.

Projects

Add astro-site/src/content/projects/<slug>.md:

---
name: "Project title"
description: "One-paragraph summary shown on the index card."
date: 2024-01-01
complete: false
tags: ["16S", "cohort"]
---
Full project description in Markdown. Cite papers inline with @citekey.

Any @citekey in the body is automatically resolved against references.bib and a References section is appended at the bottom of the page. Keys must match the BibTeX citation key in the bib file.

You can also list references explicitly in frontmatter (e.g. for a key paper list without inline text citations):

references:
  - smith2024naturemicrobiology

Publications

The publications page is generated automatically from references.bib. Update the file by re-exporting from Zotero (select all → Export Library → BibTeX, include DOIs). No other changes needed.

Branding

Colors, typography, and spacing are defined in branding/design-tokens.json. Edit that file and run npm run build (or npm run dev) to regenerate tokens.css. Do not edit tokens.css directly — it is not tracked in git.