# Architecture

Workspace boundaries and the static build pipeline.

## Workspace boundaries [#workspace-boundaries]

The root Bun workspace includes `apps/*` and `packages/*`.
`apps/portfolio` owns Next.js, React, Fumadocs, and Pagefind. Canonical
documentation stays in root `docs/`, read by the site's Fumadocs configuration.
`packages/tools` provides shared configuration and repository automation.

## Data flow [#data-flow]

```text
root docs + committed data + curated projects
  -> Fumadocs bindings + UnoCSS generated stylesheet
  -> Next.js static export and processed Markdown manifest
  -> tools export-ai creates Markdown twins, LLM indexes, and feeds
  -> Pagefind indexes exported documentation HTML
  -> SEO contract and offline link checks
  -> GitHub Pages artifact
```

The site uses committed snapshots; it does not yet query the planned worker or
client. Their implementation and live-data fallback remain separate milestones.

## Styling [#styling]

The shared UnoCSS preset and `apps/portfolio/uno.config.ts` define semantic
custom rules. Handwritten CSS owns the visual identity and responsive layout.
The site does not use a Tailwind preset or a custom PostCSS pipeline.

## Repository tooling [#repository-tooling]

Bun executes repository maintenance commands in `packages/tools/src/cli/` and
tests in `packages/tools/tests/` and `packages/tools/features/`. Pixi locks
system tools; Bun locks JavaScript dependencies.

## Licensing [#licensing]

The repository is MIT licensed. Linked repositories remain independent
products with their own documentation and licenses.
