# A Research Journal Personal research projects exploring unfamiliar territory with AI. **Parent context:** See `../CLAUDE.md` for project-wide routing. ## Development ```bash npm install npm run dev ``` Open http://localhost:19197 ## Architecture This blog uses a data-driven architecture: - **Content lives in `content/`** - YAML metadata + Markdown prose - **Components in `src/components/`** - Reusable DRY components - **Dynamic routes** - Notes use `[slug]` for SSG ## Content Structure ``` content/ ├── projects/ │ └── maxwell.yaml # Project metadata ├── notes/ │ ├── 001-picking-a-problem/ │ │ ├── meta.yaml # Prompts, navigation, metadata │ │ └── content.md # Prose content │ └── 002-building-the-scaffolding/ │ ├── meta.yaml │ ├── content.md │ └── files/ # Expandable file contents │ ├── vision.md │ ├── architecture.md │ └── roadmap.md └── white-paper/ └── outline.yaml # Structured sections ``` ## Routes - `/` - Journal home (list of projects) - `/maxwell` - Maxwell project landing - `/maxwell/white-paper` - Formal paper outline - `/maxwell/notes/[slug]` - Individual research notes (dynamic) ## Adding a Note 1. Create `content/notes/NNN-slug/` directory 2. Add `meta.yaml` with prompts, navigation, filesCreated 3. Add `content.md` with prose 4. Add `files/` directory if filesCreated references files 5. Update previous note's `meta.yaml` navigation.next ## Key Files | File | Purpose | |------|---------| | `src/lib/content.ts` | Content loaders (getProject, getNoteBySlug, etc.) | | `src/components/layout/PageLayout.tsx` | Page wrapper | | `src/components/layout/BackNav.tsx` | Back navigation | | `src/components/notes/NoteHeader.tsx` | Note header (#id, date, title) | | `src/components/notes/PromptsSection.tsx` | Prompts with copy buttons | | `src/components/notes/FilesSection.tsx` | Expandable files | | `src/components/notes/NoteFooter.tsx` | Prev/next navigation | | `src/components/white-paper/OutlineSection.tsx` | Outline sections | | `src/components/copyable.tsx` | CopyButton, CopyableBlock, ExpandableFile | ## Note meta.yaml Schema ```yaml id: "001" slug: 001-picking-a-problem date: "2026-02-06" title: Picking a Problem preview: "Short description for list view" prompts: - id: unique-id label: Button label content: | Prompt content here filesCreated: - name: filename.md description: What this file is navigation: prev: null # or { slug, id, title } next: slug: 002-building-the-scaffolding id: "002" title: Understanding the Project ```