# Content model Everything the site shows is a Markdown note with YAML frontmatter in the vault at `20-29_Makerspace/24_Homelab_Infrastructure/24.01_PersonalWebsite/Site/`. `24.02_PatiunWebsite` is reserved for the Patiun site later. ## Rules every note follows - A note's `type` field says what it is. The types, their fields and their folders are defined once, in `packages/schema/src/types.ts`. - A note is live only when `publish: true`. Missing means false. - Links between notes are Obsidian wikilinks, `[[Note name]]`, in frontmatter or in the body. A link resolves by file name, so file names are unique across the whole Site folder. - Images live in `Site/_attachments/` and are linked the same way, `[[galaxy-dice.jpg]]`, or are full https URLs. - Folders starting with `_` hold templates and attachments, never notes. Files starting with `_` are single settings notes: `_site.md`, `Now/_kinds.md`, `Store/_settings.md`. - Slugs come from the title unless a note sets `slug`. They are unique within a type. ## Note types | Type | Folder | Notes | | --- | --- | --- | | `post` | `Posts/` | Blog posts. `postType: case study` also appears on the Work page. | | `library-item` | `Library//` | Books, light novels, webnovels, manga, manhwa, video games, anime, TV, movies. | | `board-game` | `Shelf/` | The Shelf. Players and play time sync from BoardGameGeek by `bggId`. | | `craft`, `station`, `tool`, `make` | `Workshop/…` | The Workshop. | | `tabletop-system`, `campaign`, `card-game`, `deck` | `Tabletop/…` | Tabletop. Magic decks sync from Archidekt. | | `experience`, `skills`, `education` | `Resume/…` | The resume page and its PDF. | | `status`, `status-kinds` | `Now/` | The status log behind Now, the Landing strip and Now chips. | | `product-line`, `store-settings` | `Store/…` | The Store. | | `site-settings` | `_site.md` | Name, tagline, location and social links. | | `page` | `Pages/` | The written introduction for a page. | Each field's title and description live in the schema too, so the JSON Schema export (`npm run schema:json`) can drive a form or explain a field to an agent. ## Designed for editing tools The content service will be the only writer apart from Obsidian. It will expose one write API, built on the schema's `checkNote`, `writeNote` and `checkVault`. The MCP server for agents is one client of that API; the admin page is another; any editing tool built later is a third. None of them define fields or rules of their own.