* fix(board): give AppShell root a viewport-height floor when a background is set The board canvas sizes itself to its content, and AppShell runs in 'static' mode so <main> doesn't force a 100dvh minimum either. That means a board's background image only covers as much height as the content needs - collapsing a container (or any board with short content) leaves flat page background showing below it instead of the background continuing to the bottom of the viewport, looking like a big empty void. Root-caused via a local repro: the grid/reflow system was already shrinking the collapsed container's own space correctly (verified the live-measured canvas height matched exactly, not the stale debug attribute) - the void was purely a background-sizing issue on the AppShell root, unrelated to the collapse/layout logic itself. * docs(boards): document background minimum-height behavior
Homarr web application
This workspace contains Homarr's Next.js application. It consumes the shared API, authentication, database, board, widget, translation, and UI packages from this monorepo.
Run commands from the repository root:
pnpm install --frozen-lockfile
cp .env.example .env
Keep infrastructure running in the first terminal:
pnpm docker:dev
Apply migrations and start the application in a second terminal:
pnpm db:migration:sqlite:run
pnpm dev
The app listens on http://127.0.0.1:3000. Configure an absolute writable DB_URL, AUTH_SECRET, and
SECRET_ENCRYPTION_KEY in .env before first startup.
To test Custom Widgets against a local Community Workshop, start PocketBase and the docs in separate terminals:
pnpm docker:workshop
WORKSHOP_API_URL=http://127.0.0.1:8090 pnpm dev:docs
Then set:
HOMARR_WEBSITE_URL=http://127.0.0.1:3003
WORKSHOP_API_URL=http://127.0.0.1:8090
WORKSHOP_WEB_URL=http://127.0.0.1:3003/workshop
Server-rendered runtime configuration exposes those URLs to the browser, so changing a production container's environment does not require rebuilding the Next.js bundle.
See apps/docs/docs/advanced/development/getting-started.mdx
for the full contributor setup.