Sys.Witch V2 separates content from presentation so you can personalize the theme without touching any CSS or component logic. Your portfolio content lives in the JavaScript data files inside theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/sys-witch/llms.txt
Use this file to discover all available pages before exploring further.
data/ folder. Each file defines a structured collection — projects, skills, writing posts, or case studies — that the React components consume and render automatically. Update the data files, and the theme renders your content through the existing component architecture.
Where Content Lives
The theme organizes editable content into structured data files:Page-Level Content
Your name, headline, biography, and contact details live as text inside the React page components. Edit the string content directly inside the relevant page component in the
pages/ directory.Data Files
data/projects.js, data/skills.js, data/writing.js, and data/caseStudies.js hold structured portfolio content rendered by the theme’s React components.Step-by-Step Personalization
Update your name, headline, and introduction
Open the home page component and replace the portfolio-owner name, professional headline, and homepage introduction with your own. This is the first page visitors see, so it should reflect your identity clearly.
Update your biography and background
Open the About page component and replace the biography, background story, and career narrative with your own. The timeline structure works well for milestone-based career histories.
Update data/projects.js — Featured Work
Open
data/projects.js and replace each project object with your own work. Each entry in the array follows this shape:| Field | Required | Description |
|---|---|---|
id | Yes | Unique slug for the project (no spaces) |
title | Yes | Display title — shown in all caps by the component |
description | Yes | Short paragraph describing the project |
tags | Yes | Array of technology or skill labels |
image | Yes | URL to a project screenshot or cover image |
demoUrl | No | Link to a live demo |
sourceUrl | No | Link to the source code repository |
readmeUrl | No | Link to an extended README or documentation |
bindingNotes | No | A thematic annotation — displayed as flavour text on the card |
Fields
demoUrl, readmeUrl, and bindingNotes are all optional. If you omit them, the ProjectPanel component will not render those links or annotations for that entry.Update data/skills.js — Skills and Technologies
Open
The current categories in the default data are
data/skills.js and replace the skill entries with your own. Each skill maps to a RuneTile component that displays the name, category, mastery level, and description together with a decorative sigil.| Field | Required | Description |
|---|---|---|
id | Yes | Unique identifier string |
name | Yes | Display name of the skill or technology |
category | Yes | Group label — used to organize tiles by section |
mastery | Yes | Either "Master" or "Adept" |
description | Yes | One-sentence description in the theme’s voice |
sigilId | Yes | References a key in data/sigils.js — controls the decorative SVG icon |
Languages, Front-End, Back-End/Data, Debugging, Git/GitHub, and Design. You can use any category names you like — the component groups tiles by the category value automatically.Valid sigilId values are: rune-1, rune-2, rune-3, rune-4, rune-5, rune-6, rune-7.Update data/writing.js — Writing Archive
Open
data/writing.js and replace the writing entries with your own posts, articles, or essays. Each entry is rendered by the TomeCard component on the Writing page.| Field | Required | Description |
|---|---|---|
id | Yes | Unique string identifier |
title | Yes | Full title of the post or article |
excerpt | Yes | One- or two-sentence summary shown on the card |
date | Yes | Publication date in YYYY-MM-DD format |
channel | Yes | Category label such as "Technical", "Reflections", or "Project Writeups" |
url | Yes | Link to the full post — can be an external URL or "#" for future content |
Update data/caseStudies.js — Detailed Project Breakdowns
Open
data/caseStudies.js and replace the case study entries with your own project post-mortems or technical deep-dives. Each entry is rendered as a RitualReport on the Case Studies page. The sections array controls the structured breakdown content.| Field | Required | Description |
|---|---|---|
id | Yes | Unique slug for the case study |
title | Yes | Display title — the theme prefixes these with "RITUAL REPORT:" by convention |
sigilId | Yes | Controls the decorative sigil shown with the report |
sections | Yes | Array of { heading, content } objects forming the report body |
Update contact details and social links
Open the Contact page component and replace all placeholder contact information with your own. This includes:
- Email address — the primary contact method
- GitHub profile URL — link to your public GitHub account
- LinkedIn profile URL — link to your LinkedIn profile
- Résumé or CV download link — a direct link to a PDF or hosted document
- Any additional external profiles you want to surface
SummoningForm component handles the contact form UI. If you want to wire the form to a backend service (e.g. Formspree, Netlify Forms), update the form submission handler in the component.Editing Checklist
Use this table as a final review before publishing your personalized site.| Location | What to Update |
|---|---|
| Home page component | Portfolio-owner name, professional headline, homepage introduction |
| About page component | Biography, background narrative, timeline milestones, trait descriptions |
data/projects.js | Project titles, descriptions, tags, images, demo/source URLs, binding notes |
data/skills.js | Skill names, categories, mastery levels, descriptions, sigil IDs |
data/writing.js | Post titles, excerpts, publication dates, channel labels, article URLs |
data/caseStudies.js | Case study titles, section headings, section content, sigil IDs |
| Contact page component | Email, GitHub, LinkedIn, résumé link, any additional social profiles |