Files
Claude a2f723ca2d Start the rebuild: note schema, vault kit and data migration
Phase 1 of the functional design plan.

- Move the old site into legacy/, unchanged, for reference. It still
  builds from there until cutover.
- Add packages/schema: the one definition of all 20 note types, with
  field titles and descriptions, note and vault checks, and JSON Schema
  export so later editing tools and the MCP server share it.
- Add vault-kit: Obsidian templates generated from the schema, and the
  Site guide for 24.01_PersonalWebsite.
- Add tools/migrate: turns the legacy JSON, collections, store data and
  page text into 545 Site folder notes and 84 images, and checks the
  result with the schema.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012aSbo2D1qP8cMFQCykf7kx
2026-10-11 18:40:55 +00:00

2.4 KiB

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/<Medium>/ 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.