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… |
|---|---|
| Introduction | content/about.html |
| Team and biographies | content/people.html |
| Research projects | content/research.html |
| Publications | content/publications.html |
| Events page | content/events.html |
| Recorded events archive | content/events-archive.html and content/event-*.html |
| Contact details | content/contact.html |
| Future events and seminars | Existing professor editor |
| Short-lived announcements | The optional Announcements Google Sheet (after setup) |
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".
<h3>Project title</h3> to your new title.href="…" and the visible words between the tags.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>
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 & for an ampersand and < for a literal less-than sign. Do not remove closing tags or quotation marks around links.
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">
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.
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.
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.