A digital public history project exploring the history of the Lynhaven neighborhood in Alexandria, Virginia. Hosted by the Roy Rosenzweig Center for History and New Media (RRCHNM) at George Mason University.
Project lead: Dr. Meredith Lair, GMU History Department, mlair@gmu.edu
Prerequisites: Hugo Extended (tested with 0.147.8).
make serve # dev server with drafts/future content visibleThe dev server runs at http://localhost:1313/ with live reload.
make build # minified, fingerprinted build to public/
make check # build and fail on any template/config error, without writing public/- Hugo — static site generator, no build step beyond Hugo itself (no Node, no package manager)
- Plain CSS (
assets/css/) — no framework - Vanilla JS (
assets/js/) — the image lightbox and Neighbor Corner gallery
content/ Markdown content: exhibits, oral-histories, neighbor-corner, about
layouts/ Hugo templates, partials, and shortcodes
layouts/shortcodes/ figure, quote, gallery, timeline — used in exhibit body Markdown
assets/css/ Site styles (base.css, pages.css)
assets/js/ Lightbox and gallery interactivity
static/images/ Exhibit images and site logos
static/neighbor-corner/ Uploaded community photos and documents
archetypes/ Scaffolding templates used by `hugo new` (see Makefile)
Content is authored as flat Markdown files with YAML front matter under content/ (no page bundles — images live in static/, referenced by filename).
For a step-by-step guide aimed at editing through the GitHub web interface (no local setup required), see CONTRIBUTING.md.
Edit content/_index.md — title and the body text are the welcome heading/paragraph. The tiles front-matter block controls the four navigation tiles' labels and optional thumbnail images (filename only; images live in static/images/home/). Tile URLs and order are fixed in layouts/index.html.
make new NAME=corner-groceryThis scaffolds content/exhibits/corner-grocery.md from archetypes/exhibits.md. Front matter is simple metadata (title, period, dek, date, weight, thumbnail); the body is normal prose Markdown. Use shortcodes for embeds:
{{< figure id="..." image="..." alt="..." caption="..." />}}for a full-width image (addposition="left"/"right"in block form to run text beside it — see the archetype comment for the exact syntax){{< quote quote="..." attribution="..." >}}for a pull quote{{< gallery >}}...{{< /gallery >}}for a photo set{{< timeline >}}...{{< /timeline >}}for a dated event list
Citations use standard Markdown footnotes ([^1] / [^1]: citation text) — Hugo numbers, links, and back-links them automatically. See content/exhibits/sample.md for a full worked example.
Add a Markdown file to content/oral-histories/ with title, photo, quote, interviewLabel, interviewURL, and date in front matter; the body is the interview narrative in prose.
make new-submission NAME=house-on-elm-streetFill in title, submitter, and caption, put the file's exact filename in file, and copy the actual file into static/neighbor-corner/. Leave draft: true until it's reviewed — draft items are invisible on the live site. Flip draft: false and rebuild/redeploy to publish.
Edit content/about.md — stakeholders, acknowledgements, and contact are front-matter fields; the body is the page's intro paragraph.
Edit the [[menus.main]] entries in hugo.toml.