Files
homarr/apps/docs
Thomas Camlong 018f98e318 perf: implement Phase 1 homepage diet via Next.js Cache Components
P1-0: V8 heap cap (HOMARR_MAX_OLD_SPACE_SIZE, default 512MB)
P1-1: Module graph cuts
  - Dynamic integration imports (55 static → lazy loaders)
  - Conditional DB driver loading (only configured driver loaded)
  - Replace jsdom with linkedom for SVG sanitization
  - Delete eager widget barrel (55 import * as → 0)
  - Extract createRetryableLoader to @homarr/common
P1-2: Enable cacheComponents + restructure root layout
  - Suspense boundaries around session-dependent providers
  - ColorSchemeScript replaces server-side cookie reads
  - Board/manage/auth layouts wrapped in Suspense
P1-3: Cache read paths
  - Cache tag registry + invalidation helpers
  - Cache invalidation wired into all mutation routers
  - Translation deep-merge memoized per locale
P1-4: Prerendered shells + loading.tsx files
P1-5: Shared integration data cache (60s TTL, stale-while-revalidate)
P1-6: Redis-backed Next.js cache handler (@homarr/next-cache-handler)
P1-7: Redis optional (memory channel fallback), TTL on pubSub:last:*,
      Redis clients consolidated from 6 to 2
2026-08-07 18:59:47 +02:00
..

Homarr Documentation (@homarr/docs)

The official homarr.dev documentation site, built with Docusaurus 3 and living inside the Homarr monorepo.

Why it's in the monorepo

Having documentation alongside the application code enables:

  • Two-way linking — the docs app imports from @homarr/definitions for type-safe integration/widget metadata, and the main app references doc paths via generated sitemap types
  • Atomic PRs — code changes and their documentation updates ship in the same pull request
  • Shared tooling — same Node version, pnpm catalog, oxlint/oxfmt, CI pipeline
  • Build-time validation — Docusaurus strict mode catches broken links and references at build time

Development

From the monorepo root:

# Start the docs dev server (port 3003)
pnpm dev:docs

# Or from within this directory
pnpm dev

Build

# Build docs only
pnpm turbo build --filter=@homarr/docs

# Build everything (docs + main app + tasks + websocket)
pnpm build

Lint & Format

Uses oxlint and oxfmt (same as the rest of the monorepo):

pnpm lint        # oxlint
pnpm format      # oxfmt (check)
pnpm format -- --write  # oxfmt (fix)

Typecheck

pnpm typecheck

Content Structure

docs/
├── getting-started/    # Installation guides, glossary, prerequisites
├── management/         # Boards, apps, users, integrations, settings, tasks, API
├── integrations/       # 55 integration guides (one folder each)
├── widgets/            # 42 widget guides (one folder each)
├── advanced/           # SSO, env vars, proxy, styling, CLI, development
└── community/          # FAQ, donate, license, translations, get-in-touch

Each integration/widget doc follows a consistent pattern:

  • index.ts — typed metadata (IntegrationDefinition / WidgetDefinition)
  • index.mdx — content using shared React components (IntegrationHeader, WidgetHeader, etc.)

Importing from homarr packages

The docs app has @homarr/definitions as a workspace dependency. You can import integration kinds, widget kinds, and other definitions directly:

import { IntegrationKind } from '@homarr/definitions';

This enables type-safe references to homarr domain concepts within documentation code.

Search (Algolia DocSearch)

Search uses the Docusaurus Algolia index (crawler cd77a285-2756-4557-bf21-ee703748df15). A separate markdown index is built for LLM markdown indexing.

Crawler reference config: docsearch.config.js.

Verify search health:

pnpm verify:search

Tech Stack

Layer Technology
Site generator Docusaurus 3 (@docusaurus/preset-classic)
Styling Tailwind CSS 3 + Docusaurus Infima
Icons @tabler/icons-react
Diagrams Mermaid (@docusaurus/theme-mermaid)
Search Algolia DocSearch
Analytics PostHog
Charts @nivo/line

Contributing

When making changes to the homarr codebase that affect user-facing behavior, always update the corresponding documentation in this app. See .cursor/rules/documentation-sync.mdc for the complete mapping of code changes to doc locations.