← Lab website

A small guide to updating the website

The website has two kinds of content. Permanent information is written in small HTML files. Frequently changing information comes from Google Sheets.

To change…Open…
Introductioncontent/about.html
Team and biographiescontent/people.html
Research projectscontent/research.html
Publicationscontent/publications.html
Events pagecontent/events.html
Recorded events archivecontent/events-archive.html and content/event-*.html
Contact detailscontent/contact.html
Future events and seminarsExisting professor editor
Short-lived announcementsThe optional Announcements Google Sheet (after setup)

Pages and search

The homepage introduces the team. Research, publications, events, about, and contact each have their own page. The recorded-events archive is at /events/archive/, with a separate page for each archived event. Edit the same content files listed above. The short homepage welcome is in content/home.html; its three exploration links are in content/explore.html.

Search opens with the Search button, Ctrl+K on Windows, or Command+K on Mac. It indexes your HTML automatically at build time, including new article blocks. Visitors can use arrow keys and Enter to open results, and Escape to close. Current lab notices are included when their feed is available. All future events and seminar listings are maintained on seminars.danajalobeanu.com; the lab site links there. No separate search service or manual index is needed.

For links between pages, use /research/, /publications/, /events/, /events/archive/, /about/, /contact/, or /#people. Search links to individual articles automatically. If you want a permanent bookmark that survives title changes, give an article a unique id="my-project".

Edit existing text

  1. Open the relevant file in a text editor, or use the pencil button on the file in GitHub once the repository is connected.
  2. Change the words between the HTML tags. For example, change <h3>Project title</h3> to your new title.
  3. For a link, replace the address inside href="…" and the visible words between the tags.
  4. Save the file. Preview the built website before publishing.
  5. When Git deployment is configured, committing the change to the production branch starts a deployment. Wait for it to succeed, then reload the website.

Add a person

In content/people.html, copy one complete block from <article class="person"> through </article>. Paste it inside people-grid, after another person. Replace the initials, role, name, biography, and links. Here is a template:

<article class="person">
  <span class="person-initials" aria-hidden="true">AB</span>
  <p class="eyebrow">Researcher role</p>
  <h3>Full name</h3>
  <p>A short biography.</p>
  <a href="https://example.org/">Personal website ↗</a>
</article>

Add a publication, project, or event

Each file contains repeated <article>…</article> blocks. Copy one complete block and replace its text. Keep it inside the same list. To remove an entry, remove that entire block. To reorder entries, move entire blocks.

To add a paragraph, use <p>Your text.</p>. Use <em>Book title</em> for italics. Write &amp; for an ampersand and &lt; for a literal less-than sign. Do not remove closing tags or quotation marks around links.

Add a portrait

Place a suitably sized image in public/assets/. Replace the initials span with this, using your filename and the person’s name:

<img src="/assets/person-name.jpg" alt="Full name"
     width="80" height="80" loading="lazy"
     style="object-fit:cover;border-radius:50%;margin-bottom:2rem">

Short-lived announcements

A maintainer first creates a Google Sheet tab with these column headings and configures its CSV export address as ANNOUNCEMENTS_FEED_URL in Cloudflare:

title,summary,link,date,expires,published

Then edit the rows in Sheets. Use YYYY-MM-DD dates. The optional date is the first display day and expires is the last display day, using Nuremberg time. Leave either blank for no limit. Set published to yes to show a notice or no to hide it. A title is required. The link is optional and must start with https:// or http://. Notices disappear automatically after their expiry date.

The source sheet is public: do not put private information in it, even in hidden or unpublished rows. A hidden row is a display choice, not private storage.

When will changes appear?

Static HTML updates appear after a successful deployment and reload. Live panels refresh roughly every five minutes per Cloudflare location; the first visit after that interval may see the previous version while a refresh runs. During a feed outage, cached notices may remain visible for up to an hour, clearly marked as an older copy. The direct seminar link is always available.

For the technical maintainer

Run npm install once, then npm run dev for a local preview. After changing HTML files, restart this command to rebuild. Run npm run check and npm run build before publishing. Edit source files, never the generated dist/ folder.

The layout is in templates/layout.html; appearance is in public/styles.css; live panels are in public/dynamic.js; feed validation and caching are in worker.js. These files normally do not need changes when adding content.