Everything about the people shown on the People page (/people): the PI,
current students, alumni, and visiting members.
- Content location:
src/content/members/ - Photos:
public/images/members/ - Resumes (optional):
public/docs/resumes/ - Schema source of truth:
src/content/config.ts - Rendered by:
src/pages/people.astroandsrc/pages/members/[...slug].astro
The People page is folder-driven. A member appears in a section based on the folder their file lives in — not just the
rolefield. Putting the file in the right folder is the most important step.
| Folder | Shows up as |
|---|---|
members/pi/ |
Principal Investigator |
members/current/phd/ |
Current Ph.D. students |
members/current/masters/ |
Current Master's students |
members/current/undergraduate/ |
Current undergraduates |
members/alumni/ |
Alumni (grouped, see below) |
members/visiting/students/ |
Visiting students |
members/visiting/faculty/ |
Visiting faculty |
A
current/postdoc/folder may exist but is not rendered. Current post-docs are not shown as a separate section; post-doctoral alumni appear under Alumni viaalumniType: "Post-Doctoral Researcher".
-
Pick the folder for the student's role:
src/content/members/current/phd/src/content/members/current/masters/src/content/members/current/undergraduate/
-
Create a file named after the person, e.g.
jane-doe.md. -
Add the frontmatter:
--- name: "Jane Doe" role: "Ph.D." # "Ph.D." | "Masters" | "Undergraduate" joinDate: "2026" email: "jdoe@asu.edu" github: "https://github.com/janedoe" linkedin: "https://www.linkedin.com/in/jane-doe/" google_scholar: "https://scholar.google.com/..." resume: "/docs/resumes/jane-doe.pdf" researchInterests: ["AI-driven Multi-Level Compilers"] order: 99 image: "/images/members/jane-doe.jpg" isAlumni: false --- Short bio in Markdown.
-
Add the photo at
public/images/members/jane-doe.jpg(and resume PDF if used). -
Validate:
npm run build.
- Open the member's file under
src/content/members/.... - Edit the frontmatter fields or the bio body.
- If you change the photo, replace the file in
public/images/members/(keep the same path, or update theimagefield). - Validate:
npm run build.
To change the order a member appears in their section, set
order(lower numbers appear first).
-
Move the file into the alumni folder, keeping the filename stable:
- from
src/content/members/current/masters/jane-doe.md - to
src/content/members/alumni/jane-doe.md
- from
-
Update the frontmatter:
--- name: "Jane Doe" role: "Alumni" joinDate: "2023" image: "/images/members/jane-doe.jpg" isAlumni: true alumniType: "Master’s Graduate" graduated: "Masters, Spring 2026" currentPosition: "ML Engineer at Example Corp" ---
-
Set
alumniTypeto one of (a single value or an array of these):"Ph.D. Graduate""Master’s Graduate""Undergraduate Researcher""Post-Doctoral Researcher"
-
Validate:
npm run build.
Important: an alumni file with an empty or missing
alumniTypewill not appear in any alumni subsection. Always set a recognized value.
- Delete the member's file from
src/content/members/.... - Optionally delete their now-unused assets:
public/images/members/<slug>.jpgpublic/docs/resumes/<slug>.pdf
- Validate:
npm run build.
Removing a current student usually means moving them to alumni instead — see Move a student to alumni.
name(string)role(enum, see below)joinDate(string)
"Principle Investigator" | "Ph.D." | "Masters" | "Undergraduate" |
"Alumni" | "Postdoc" | "Visiting Student" | "Visiting Faculty"
The schema literally uses
"Principle Investigator"(kept as-is). There is no"Faculty"value.
- Media:
image,photoUrl - Links:
email,website,github,linkedin,portfolio,google_scholar,resume - Research:
researchInterests(string array) - Ordering:
order(number; lower sorts first) - Alumni metadata:
isAlumni(boolean),alumniType,currentPosition,graduated,university,duration
"Ph.D. Graduate" | "Master’s Graduate" |
"Undergraduate Researcher" | "Post-Doctoral Researcher"
- May be a single string or an array of strings.
- Plural variants (e.g.
"Ph.D. Graduates") are also recognized.