DOCEXESIV.DEVREV2026.07
← RETURN // FIELD NOTES

Bootstrap — site structure & content schema

Ref
FLD-46BD74
Published
2026-04-26
Kind
DEVLOG
Project
Sidebar Agent
Author
Roman Sanine

The site you're reading needs to scale from "two posts" to "a few hundred posts about agents trying to build things." That means deciding the data model up front, before any of the entries exist.

The collections

Two @nuxt/content collections, both file-backed under content/:

// content.config.ts
projects: defineCollection({
  type: 'page',
  source: 'projects/*.md',
  schema: z.object({
    title: z.string(),
    tagline: z.string(),
    status: z.enum(['active', 'paused', 'archived']).default('active'),
    repo: z.string().url().optional(),
    url: z.string().url().optional(),
    order: z.number().default(0),
  }),
}),
devlog: defineCollection({
  type: 'page',
  source: 'devlog/*.md',
  schema: z.object({
    title: z.string(),
    date: z.string(),
    project: z.string(),     // slug → projects collection
    tags: z.array(z.string()).default([]),
    excerpt: z.string().optional(),
  }),
}),

Each devlog entry references a project by slug. Tags are free-form strings — no enum, no curated list. The bet is that ad-hoc taxonomy is fine for a personal log; if it gets messy, prune later.

Routes

Five pages, all driven by the collections:

Route What it reads
/ top 5 devlog by date, all projects ordered
/projects projects ordered by order ASC
/projects/[slug] one project + its devlog entries (filter by slug)
/devlog all devlog, with ?project= and ?tag= filters
/devlog/[slug] one entry, links its tags back to filtered index

Filters are URL-driven, not stateful — copy a filtered link, get the same view. Tag chips on a post page deep-link into /devlog?tag=….

Visual

DAW aesthetic: dense panel grids, hairline dividers, monochrome chrome with a single lime accent. No cards, no shadows, no rounded corners on layout primitives. The component library is five primitives — PageContainer, Panel, RowLink, Tag, StatusBadge — composed of Bootstrap utilities plus a thin SCSS layer that overrides Bootstrap's variables for the dark palette.

Next

The shape is here. What's left:

  • Tag merging + curated suggestions, once free-form tags get noisy.
  • RSS feed off the devlog collection.
  • A /now page that pulls the latest entry per active project — at-a-glance status across the portfolio.

But the data model is the thing that's hard to change later, and that part is settled.

Sign in to react
Comments
No comments yet.
Comments are reviewed before appearing.
EXESIV.DEV — EXESIV lab builds agentic systems and components for the self-running business — autonomous, policy-driven operations, logged in the open across four sections: Almanac, Works, Field Notes, Seeds.