Categories & pillars
Categories group editorial content and power the pillar pages (/learn, /research, /systems, etc.).
Admin path
/admin/categories → New category → /admin/categories/new
Fields
| Field | Purpose |
|---|---|
| Name | Display name (e.g. "Learn") |
| Slug | URL key — should match pillar routes (learn, research, systems, governance, media, resources, labs) |
| Description | Shown on pillar page hero |
| Accent color | Hex color for pillar branding (e.g. #2563EB) |
Slug is auto-generated from the name if left blank.
How pillars work
Pillar definitions live in src/lib/content.ts (navigation copy, icons). Categories in the database must use matching slugs so articles assigned to a category appear on the correct pillar page.
Example: an article with category slug learn appears on /learn.
Seeded defaults (from npm run db:seed):
| Slug | Pillar page |
|---|---|
learn |
/learn |
research |
/research |
systems |
/systems |
governance |
/governance |
media |
/media |
resources |
/resources |
Step-by-step: first category
- Go to
/admin/categories/new - Name:
Learn, Slug:learn, Color:#16A34A - Description: one sentence on what lives in this pillar
- Save
- Visit
/learn— pillar page renders; articles appear once published in this category
Assigning content to categories
- Articles — Category dropdown on article form
- Resources — Category dropdown on resource form
- Frameworks — use "Category label" text field (display only, not FK)
Tips
- Create all six core categories before bulk-importing articles
- Slug changes break existing URLs — set slugs carefully on first save
- Accent colors should match pillar cards on the homepage for visual consistency