← Stream
field notes Project hub

Design system and content guidelines

The living reference for the visual design, component library, content rules, and interaction patterns of maaike.ai.

Purpose

This is the living reference for the visual design, component library, content rules, and interaction patterns of maaike.ai. It serves two audiences: Maaike (for consistency when adding content) and Claude (for generating code and content that fits the garden).

Terminology

TermDefinition
GardenThe entire site: a collection of interconnected notes, not a blog
ItemAny piece of content (article, seed, field note, etc.)
CollectionA content type with its own schema, icon, and color
MaturityHow developed an item is: 🌱 draft → 🌿 developing → 🪴 solid → 🌳 complete
Wiki-linkInternal cross-reference using [[Page Title]] syntax
BacklinkAutomatically computed reverse wiki-link
TrailA curated or auto-generated sequence through related items
Project hubA field note with hub: true that tracks a multi-item effort

Content model

Collections

CollectionPurposeExtra fields
ArticlesPolished long-form writingpruning (optional)
Field NotesAnalysis, project tracking, research write-ups—
SeedsStandalone concepts and ideas, not project work—
WeblinksExternal links worth bookmarkingurl (required)
VideosVideo content (YouTube, etc.)url (required)
LibraryBooks, with reading statusauthor, cover, status
ExperimentsRunnable code with setup instructions—

All items share: title, date, updated, maturity, tags[], description, draft, ai.

Content rules

  • Project hubs are always field notes. If it has hub: true, it lives in field-notes/. Seeds never get hub or project tags.
  • Experiments contain code. If it’s analysis or narrative about code, it’s a field note. If it’s runnable instructions, it’s an experiment. Link the two with wiki-links.
  • Seeds are conceptual. Standalone ideas, definitions, frameworks. Not active project work.
  • Draft items (draft: true) are excluded from build output.
  • AI transparency is declared per item: 100% Maai, assisted, co-created, or generated. Omit the field to show no indicator.

Project hub template

Project hubs are field notes with hub: true that track a multi-item effort. They follow this structure:

---
title: "Project name"
date: YYYY-MM-DD
maturity: draft
tags:
  - relevant-topic-tags
hub: true
description: "One-line summary of what the project does and why."
ai: co-created
---

# Project name

One paragraph: what is this project and what problem does it solve?

## Why

Motivation. What triggered this? What's the gap?

## Design constraints

- Bullet list of non-negotiable requirements or boundaries

## How it works

Describe the approach, architecture, or method. Use sub-sections as needed.

## Observations

Insights, patterns, or surprises that emerged during the work. Not task updates, but things worth remembering.

## Project log

### YYYY-MM-DD: phase name

- [x] Completed task ([[linked-experiment|label]])
- [ ] Upcoming task

Key conventions:

  • Link to experiments and related items with wiki-links
  • Log entries are grouped by phase, not individual dates
  • Observations capture insights that might feed future seeds or articles
  • The checklist in the project log is the single source of truth for progress
  • Standard deliverables for every project: a write-up report (article or field note summarizing findings) and a slide deck (for video or presentation)

Maturity system

StageEmojiMeaning
Draft🌱Just planted, rough notes
Developing🌿Taking shape, needs work
Solid🪴Well-developed, reviewed
Complete🌳Done, polished

Displayed as an interactive 4-step track in PostLayout, and as circle size on the explore map.

Visual identity

Brand color

Hot pink #D6006C (light) / #FF4DA6 (dark). This is Maaike’s company color. It is the only “loud” color on the site. Used for: accent links, active states, maturity “complete” indicator, active trail highlights.

Palette philosophy

Warm, earthy, organic. The garden should feel hand-made and personal, never corporate or data-dashboard. Colors are muted pastels with enough saturation for WCAG AA compliance.

Collection colors (WCAG AA ≥3:1)

CollectionLight modeDark modeCharacter
Articles#7A5A48#D4A88EWarm brown
Field Notes#4A7A50#8ECF94Forest green
Seeds#A07030#E8C07ADark gold
Weblinks#7A6048#D4B89EEarth brown
Videos#6E4E68#C9A8C4Plum
Library#5A4E44#BDB0A6Dark brown
Experiments#3A7080#7ECCD6Deep teal

These colors are used consistently in: collection icons (stroke), explore map circles, legend dots, collection labels, and the ConnectionMap component.

Typography

RoleFontFallback
HeadingsLora (variable, serif)Georgia, Times New Roman
BodyRoboto (variable, sans)system sans-serif
CodeJetBrains Monomonospace

All fonts are self-hosted. Headings use clamp() for fluid sizing.

Spacing scale

--space-xs (0.25rem) through --space-3xl (4rem). Consistent across all components. Maximum content width: 65rem. Prose width: 42rem.

Dark mode

Managed via data-theme attribute on <html>, persisted in localStorage. All colors switch via CSS custom properties in tokens.css. Components never hardcode colors.

Hand-drawn aesthetic

The garden’s visual signature is a hand-drawn, sketchy style achieved through:

  • SketchyFilter: A global SVG feTurbulence + feDisplacementMap filter that adds subtle wobble to collection icons
  • Rough.js: Used on the explore page for circles, paths, and shapes. Gives SVG elements an organic, imperfect look
  • CollectionIcon: Each collection has a hand-drawn SVG icon (stroke-only, no fill except pupil/bubble elements). Stroke width 1, round caps and joins

This style should be maintained and extended, never replaced with polished geometric icons.

Component library

Layout components

ComponentPurposeProps
BaseLayoutHTML shell, meta tags, ViewTransitions, dark modetitle, description?, ogImage?
PageLayoutBaseLayout + Header + Footer + containersame as BaseLayout
PostLayoutFull post page with sidebar, maturity track, AI indicatortitle, date, maturity, tags[], collection, slug, + more

Card components

ComponentUse caseKey behavior
ContentCardMain grid card for most collections3-tag max, maturity badge, hover lift
FeaturedCardHero/spotlight cardLeft accent border, larger font, all tags shown
CompactItemSidebar lists, related postsMinimal: title, date, 2 tags max
NotePreviewSmall preview boxes3-line description clamp, min 10rem height
BookCardLibrary itemsHorizontal layout, cover image, reading status badge
LinkCardExternal weblinksShows hostname with external icon
VideoCardYouTube videosAuto-extracts thumbnail, play overlay

Interactive components

ComponentPurpose
FilterBarMaturity + tag filtering, sort controls for collection pages
DarkModeToggleSun/moon button, manages theme
WikiLinkPreviewHover popover on wiki-links with title + description
ConnectionMapSVG node graph of related posts (max 6), orbiting animation
BackLinksLists pages that link to the current page
PostSidebarSticky sidebar with backlinks, related posts, suggested books

Structural components

ComponentPurpose
HeaderSite title, nav links, hamburger menu (mobile), dark mode toggle
FooterCopyright line
ContentGridCSS grid wrapper: auto-fill, minmax(280px, 1fr)
HomepageSectionSection heading with optional “View all” link
TagListClickable tag chips
MaturityBadgeInline plant emoji for maturity level
ShareLinkedInLinkedIn share button with sketchy icon

Explore page

The /explore page is the garden’s interactive spatial view. Three modes:

Map

A 2D landscape where items are positioned by semantic similarity (UMAP projection of bge-m3 embeddings). Items rendered as Rough.js circles. Size = maturity, color = collection. Pan/zoom via d3-zoom. Cluster labels from k-means + key phrases.

Wander

Serendipity mode. Picks a random item (weighted toward under-linked content), pans the map to it, shows a “While you are here…” card with the item and its 3-4 nearest neighbors.

Paths (trails)

Curated or auto-generated sequences. Drawn as Rough.js curved lines across the map. Active trail in hot pink. Trail sidebar lists available paths with descriptions.

Explore page UI elements

  • Mode switcher: 3-button pill, top-right (Map, Wander, Paths)
  • Legend: Collapsible pill, bottom-left. 2-column collection grid + maturity size scale
  • Wander button: Bottom-right, Rough.js signpost icon
  • Tooltip: Hover card with title, collection dot, segmented maturity bar
  • Trail sidebar: Slides from right. Trail cards with left-border accent

Data pipeline

Pre-computed at build time by scripts/build-explore-data.cjs. Outputs public/explore-data.json with item metadata, 2D coordinates, cluster labels, and trails. No runtime ML needed.

Main nav (Header.astro): Field Notes, Seeds, Articles, Projects, Experiments, Library, Explore, About.

Weblinks and Videos are accessible collections but not in the main nav, to keep it focused.

Accessibility

  • All collection colors pass WCAG AA (≥3:1 for graphical elements, ≥4.5:1 for text)
  • Dark mode colors verified separately against #111111 background
  • Interactive elements have aria-label attributes
  • Mobile hamburger menu with aria-expanded state
  • Explore map supports keyboard focus (planned)
Mycelium tags, relations & arguments