# Content Guide How to add and edit content on the site. Two sections use **Content Collections** (typed markdown/MDX); the interest pages are hand-built `.astro` files. --- ## Projects (Professional page) Projects render from `src/content/projects/*.md` (or `.mdx`). Each file is one project card. The schema lives in `src/content.config.ts`. ### Add a project Create `src/content/projects/my-project.md`: ```md --- title: 'My Awesome Project' role: 'Lead Developer' # optional, default: 'Developer' tech: ['TypeScript', 'Node.js', 'SAP BTP'] # rendered as pills summary: 'A 2-3 sentence description of what it does and your contribution.' repo: 'https://github.com/you/repo' # optional demo: 'https://demo.example.com' # optional caseStudy: 'https://blog.example.com' # optional cover: '/images/my-project.png' # optional, public path order: 20 # lower = shown first, default 100 placeholder: false # true hides it from "real" styling --- Optional longer writeup in markdown here. The card only shows `summary`, but you can link to a case study for depth. ``` ### Field reference | Field | Type | Required | Notes | |---|---|---|---| | `title` | string | yes | Project name | | `role` | string | no | e.g. "Lead Developer" | | `tech` | string[] | no | Tag pills | | `summary` | string | yes | Short card description | | `repo` / `demo` / `caseStudy` | URL | no | Outbound links | | `cover` | string | no | Image path in `public/` | | `order` | number | no | Sort weight | | `placeholder` | boolean | no | Marks it as a TODO card | To remove the seed placeholder, delete `placeholder-project.md`. Aim for 3-6 real entries per the spec. --- ## Experience (Professional timeline) Experience renders from `src/content/experience/*.md`. Each file is one role on the vertical timeline. ### Add a role Create `src/content/experience/another-role.md`: ```md --- company: 'Previous Co.' title: 'Junior Developer' period: '2016 - 2020' # free-form date label focus: 'What you primarily did.' # optional icon: 'briefcase' # mdi icon name for the marker order: 20 # lower = more recent / first --- - Bullet point of an accomplishment. - Another bullet, ideally with a metric. - One more, showing impact. ``` The body renders inside an expandable "Show details" panel. Use markdown lists for bullets. Replace the bracketed placeholders in the seed `implico.md` with real outcomes, metrics, and dates. ### Icon names The `icon` field takes an mdi name without the `mdi:` prefix. Browse names at [pictogrammers.com](https://pictogrammers.com/library/mdi/) or search the installed set: ```bash node -e "const m=require('./node_modules/@iconify-json/mdi/icons.json'); console.log(Object.keys(m.icons).filter(n=>n.includes('cloud')).join('\n'))" ``` --- ## Interest pages Each interest is a hand-built page in `src/pages/interests/`. They follow the spec's template: **Header** (title + tagline), **Overview** (narrative), **Highlights** (card grid), **Currently** (active now), **Related** (cross-links). To edit content, open the relevant `.astro` file and change the copy in the frontmatter arrays or the section bodies. To add a new interest: 1. Create `src/pages/interests/my-interest.astro` (copy an existing page as a template). 2. Use ``, ``, ``, and ``. 3. Add a card for it in `src/pages/interests/index.astro` (the hub). --- ## Global content (nav, socials, tagline) Edit `src/lib/site.ts`: - `siteIdentity` โ€” name, tagline, domain - `navGroups` โ€” the two-group top nav - `socials` โ€” footer + contact links (replace the `[Greg to fill]` handles) --- ## Finding placeholders Every `[Greg to fill]` gap from the spec is rendered as a styled **Placeholder** slot (dashed border + pencil badge + "TODO ยท label"). To find them all: ```bash grep -rn "Placeholder label" src/ grep -rn "Greg to fill\|\[Greg" src/ ``` Replace each with real content as you gather it.