This guide explains how to update website content without touching any code. All content is stored in data files in the /data/ folder.
| To Update... | Edit This File |
|---|---|
| Group description | data/group.json |
| Team members | data/team.json |
| Publications | data/publications.bib |
| Team photos | images/team/ folder |
- Always make a backup before editing any file
- Use a text editor that shows syntax errors (VS Code, Sublime Text)
- Validate JSON files at jsonlint.com before saving
- Test locally by opening
index.htmlin a browser
File: data/group.json
{
"name": "MULTI Research Group",
"fullName": "Machine learning, Uncertainty visualization, Large-scale visualization, Tensor visualization, and Inverse problem",
"institution": "Scientific Computing and Imaging (SCI) Institute",
"university": "University of Utah",
"introduction": "Your intro paragraph here. Can include multiple sentences."
}To change the introduction:
- Open
data/group.json - Find the
"introduction"field - Replace the text inside the quotes
- Save the file
Note: Keep text on one line. For a line break, use \n.
File: data/team.json
Headshot Photo:
- Get a square photo (same width and height)
- Resize to 400x400 pixels
- Save as JPEG, under 100KB
- Name it
firstname-lastname.jpg(all lowercase) - Place in
images/team/folder
Research Banner:
- Get a wide image showcasing the member's research (visualization, figure, etc.)
- Dimensions: 2400×400 pixels (6:1 aspect ratio)
- Important: Place key visual content in the center 25% of the image (center 600px). The sides get cropped on narrow screens.
- Save as JPEG or PNG, under 500KB
- Name it
firstname-lastname-banner.jpg(all lowercase) - Place in
images/research/folder
┌─────────────────────────────────────────────────────┐
│ cropped on │ ALWAYS VISIBLE │ cropped on │
│ mobile │ (center 600px) │ mobile │
└─────────────────────────────────────────────────────┘
←────────── 2400px ──────────→
Open data/team.json and add a new entry to the team array:
{
"team": [
{
"id": "jane-doe",
"name": "Jane Doe",
"position": "PhD Student",
"affiliation": "Scientific Computing and Imaging Institute, University of Utah",
"titles": [
"PhD Student, School of Computing",
"Research Assistant, SCI Institute"
],
"email": "jane.doe@utah.edu",
"website": "https://janedoe.com",
"photo": "images/team/jane-doe.jpg",
"researchBanner": "images/research/jane-doe-banner.jpg",
"background": "Jane joined the group in 2024 after completing her MS at MIT. Her research focuses on machine learning applications in scientific visualization.",
"researchInterests": ["Machine Learning", "Visualization"],
"authorVariants": ["J. Doe", "Jane Doe", "J. A. Doe"]
}
]
}| Field | Description | Example |
|---|---|---|
id |
Unique identifier, lowercase with hyphens | "jane-doe" |
name |
Display name | "Jane Doe" |
position |
Short title for team card | "PhD Student" |
affiliation |
Primary institution | "SCI Institute, University of Utah" |
titles |
Array of full titles/positions | ["PhD Student", "RA"] |
email |
Contact email (optional) | "jane@utah.edu" |
website |
Personal website URL (optional) | "https://janedoe.com" |
photo |
Path to headshot image | "images/team/jane-doe.jpg" |
researchBanner |
Path to research visualization image | "images/research/jane-doe-banner.jpg" |
background |
Biography paragraph (supports HTML links) | "Jane joined in 2024..." |
researchInterests |
Array of research areas | ["ML", "Viz"] |
authorVariants |
Name variations in publications | ["J. Doe", "Jane Doe"] |
The authorVariants field must include all ways the person's name appears in publications. Check existing publications for exact spelling:
"authorVariants": ["C. R. Johnson", "Chris R. Johnson", "Chris Johnson"]- Open
data/team.json - Find the team member's entry (search for their name)
- Delete the entire entry including the curly braces
{ ... } - Remove the comma before or after if needed
- Optionally delete their photo from
images/team/
Example - Before:
{
"team": [
{ "id": "john", "name": "John" },
{ "id": "jane", "name": "Jane" },
{ "id": "bob", "name": "Bob" }
]
}Example - After removing Jane:
{
"team": [
{ "id": "john", "name": "John" },
{ "id": "bob", "name": "Bob" }
]
}- Open
data/team.json - Find the team member (Ctrl+F / Cmd+F to search)
- Change the relevant field value
- Save the file
Common updates:
- Change position: Edit
"position": "New Title" - Update email: Edit
"email": "new@utah.edu" - Add research interest: Add to the array
["Interest1", "Interest2", "New Interest"]
File: data/publications.bib
Publications are stored in standard BibTeX format. The website parses this file directly.
@Article{SCI:Doe2025a,
author = "J. Doe and C. R. Johnson",
title = "A Great Paper Title",
journal = "IEEE Transactions on Visualization",
year = "2025",
url = "https://publications.sci.utah.edu/...",
doi = "10.1109/TVCG.2025.12345",
}- Open
data/publications.bib - Add the new entry at the top of the file (after any header comments)
- Include all required fields
Entry Types:
@Article- Journal papers@InProceedings- Conference papers@Book- Books@InCollection- Book chapters@Misc- Preprints, technical reports
Required fields:
author- Authors separated by " and "title- Full title in quotesyear- Publication yearjournalorbooktitle- Venue name
Optional fields:
url- Link to PDFdoi- DOI identifier (without https://doi.org/)volume,number,pages- Journal details
Critical: Author names must match the authorVariants in team.json for filtering to work.
Standard format: First Initial. Last Name separated by and
author = "C. R. Johnson and T. M. Athawale and J. Doe",Examples:
C. R. Johnson✓T. M. Athawale✓Chris Johnson(also valid, add to authorVariants in team.json)
- Open
data/publications.bib - Find the publication (search by title or key)
- Delete the entire entry from
@Type{to the closing} - Save the file
Wrong:
{
"name": "John"
"email": "john@utah.edu"
}Correct:
{
"name": "John",
"email": "john@utah.edu"
}Wrong:
{
"team": [
{ "name": "John" },
{ "name": "Jane" },
]
}Correct:
{
"team": [
{ "name": "John" },
{ "name": "Jane" }
]
}Wrong:
{
"year": "2025",
name: "John"
}Correct:
{
"year": 2025,
"name": "John"
}Note: Numbers don't need quotes, but strings do.
Wrong:
@Article{Key2025,
author = "J. Doe",
title = "Paper Title",
year = "2025",
Correct:
@Article{Key2025,
author = "J. Doe",
title = "Paper Title",
year = "2025",
}Wrong:
title = Paper Title,Correct:
title = "Paper Title",Wrong:
author = "J. Doe, C. R. Johnson",Correct:
author = "J. Doe and C. R. Johnson",Authors must be separated by and (with spaces), not commas.
After any edit:
-
For JSON files (group.json, team.json):
- Go to jsonlint.com
- Paste your file contents
- Click "Validate JSON"
- Fix any errors reported
-
For BibTeX (publications.bib):
- Ensure every
@Type{has a matching closing} - Check that all field values are in quotes
- Verify authors are separated by
and
- Ensure every
-
Test locally:
- Open
index.htmlin Chrome or Firefox - Open Developer Tools (F12)
- Check Console tab for errors
- Verify your changes appear correctly
- Open
-
Test filtering:
- Click on team member cards
- Verify publications filter correctly
- Check that new members show their publications
After making changes:
- Upload changed files to web server
- Clear browser cache (Ctrl+Shift+R) to see changes
- Verify on live site
If validation fails and you can't find the error:
- Use VS Code - it highlights JSON and BibTeX errors
- Compare your file to a working backup
- Check for the common mistakes listed above
- For BibTeX, try an online validator like bibtex.online