Skip to Content
Content model

Content model

Content is plain data in src/content/. Pages read it, so editing a value updates every place it appears. Only content the owner has written belongs here.

Roles

src/content/experience.ts exports experienceTimeline, newest first. Each item has this shape:

export type ExperienceTimelineItem = { title: string; slug: string; label: string; // location label, e.g. "New York, NY" company: string; period: { start: string; end: string | "Present" }; website?: string; description: string; highlights: string[]; /** Optional long-form content (case studies, projects). Rendered on the role page only when present. */ sections?: { title: string; body: string }[]; };

To add or change a role, edit that array. These places update automatically:

  • the landing page timeline,
  • the /experience/[slug] page for the role, with its previous and next navigation,
  • the /resume page,
  • the sitemap.

Skills

src/content/skills.ts exports skills. Each skill has a name, a key (its URL slug at /skills/[key]), a group, an icon, a stack, a type and a self-assessed proficiency. The stack value is one of frontend, backend, devops or design, and stackLabels in the same file gives each its display name. The landing grid, the /skills/[skill] pages and the skills lists on /resume all read from here.

Resume

  • src/content/resume.ts holds the resume-only data: the contact line and the education list, plus RESUME_PDF_PATH.
  • The PDF itself is public/resume.pdf. Replace that file to change what the Download PDF button serves and what is attached to the emailed copy.

The /resume page shows the roles from experience.ts, so the PDF and the page can differ. Keep them in step when you change either.

  • src/content/about.ts provides the About copy shared by the landing page and /about, plus optional extra sections.
  • src/content/links.ts lists the social links. The footer links are defined in src/containers/Footer/Footer.tsx.

Rule of thumb

If the owner has not written it, it does not go in. The product brief marks metrics, project names, client names, quotes and case-study details as things that must never be fabricated.

Last updated on