Desktop
The desktop of Gentian OS — login hub, desktop/mobile bases, app launcher, and
iframe window host. One of the two apps in gentian-ui; the administration
console is the other (../admin-console). Canonical scaffold for Gentian-built UI — same stack as
the app template gentian-apps/apps/_template
(catalog apps and kernel shell).
What it does, and what it does not
The desktop is a relay for tiles. It shows what the signed-in person may open — the tiles the usher answers for them — and opens it, and it keeps that person's own preferences. It installs nothing, removes nothing, grants nothing and reads no catalog: administering apps is the administration console's (its Apps tab), and nothing an ordinary member could interfere with is reachable from here. An App Store, on a cluster that has one, is an app of its own and arrives as a tile like any other; the desktop has no special handling for it.
Quick start
docker compose -f docker-compose.dev.yaml up --build
- Shell UI: http://localhost:5173
- API docs: http://localhost:8000/docs
Local dev uses AUTH_DISABLED=true and VITE_AUTH_DISABLED=true (see
backend/.env.example, frontend/.env.example, or docker-compose.dev.yaml).
Layout
backend/ shell-api (FastAPI) — same modules as gentian-apps/apps/_template
frontend/
design-system/ Brand tokens (gentian-theme.css)
public/fonts/ Self-hosted webfonts
public/tiles/ App launcher glyphs (PNG; `npm run glyphs` renders them)
assets/glyph-templates/ The glyphs' SVG templates, never served
public/branding/ Logo
src/auth/ OIDC stubs
src/shell/ App menu, background, launcher
chart/ Kernel Helm chart (portal.<domain>)
Related
- docs/overview/architecture.md — target shell behavior
- docs/FRONTEND-STACK.md — why React
- ../../AGENTS.md — conventions for coding agents
Layout
An app directory in the gentian-apps layout (apps/<name>/), so that the
desktop and the console sit side by side in the same shape and either could
move to a repository of its own as a move of files and nothing else:
backend/ FastAPI — who is signed in, their tiles (from the usher), their preferences
frontend/ React SPA — Vite, TanStack Router/Query, Zustand, Tailwind
chart/ Helm — api + web Deployments, no RBAC, no mounted token
docs/ SECURITY.md, FRONTEND-STACK.md, architecture.md, ai-widget.md
No profile/. The desktop's ComponentProfile lives in the gentian-os chart
(charts/gentian-os/templates/componentprofile-desktop.yaml), because the
platform installs the desktop for every tenant itself rather than offering it
in a catalog — gentian-apps' apps/_template/README.md states this exception. One
declaration, in the repository that does the installing.