Developer Documentation Index
Guides for working on Waldur HomePort. Start with development-setup.md if you are new to the codebase. The root CLAUDE.md file curates the most critical rules for day-to-day work.
Getting started
| Guide | Covers |
|---|---|
| development-setup.md | Environment setup, essential commands, build tooling, browser debugging, i18n commands |
| development-workflow.md | Planning, TDD, problem-solving approach |
| architecture.md | Redux store, UI-Router routing, component organization |
| code-quality.md | Linting, formatting, TypeScript checks |
| testing.md | Vitest unit testing and E2E standards |
UI patterns
| Guide | Covers |
|---|---|
| component-library.md | Reusable UI components: buttons, modals, tables, filters — with prop references |
| tabs.md | Tabs: Tabs, TabNav, EmbeddedTabs, mount modes, tokens, gotchas, migrating off Bootstrap Nav/Tab |
| a11y-decision-matrix.md | Accessibility decision matrix: SegmentedControl vs Tabs vs Action Buttons vs Nav |
| button-ui-guide.md | Comprehensive button UI guide: BaseButton, tokens, tooltips, toggles, segmented controls |
| ui-consistency-guidelines.md | Empty states, buttons, loading indicators, status indicators and colours, tooltips, null-value display |
| tables.md | useTable, columns, filters, row actions, export |
| forms.md | React Final Form, *Group / *EditField / *Filter patterns, TabbedSection |
| filter-migration-guide.md | Generated table filters from the OpenAPI schema |
| theme.md | Dark mode and theming: semantic utilities, theme-aware tokens, third-party components |
| design-tokens.md | Colour ramps, semantic roles (text scale, surfaces, borders, status matrix, brand), the Tailwind bridge, Bootstrap colour collisions, guards |
| menu-navigation.md | Sidebar menu structure and state-based routing |
| sidebar.md | Sidebar navigation architecture, design tokens, components, and recipes |
| tailwind-shadcn-migration-notes.md | Bootstrap → Tailwind/shadcn migration: cascade layers, !important collisions, token extraction, lint rules, visual-parity tests |
| e2e-locators.md | How waldur-integration-testing locates menus, tabs and filters (roles and test ids), and what replaced the old class names |
| menus.md | Menus, dropdowns and popovers: which component to use, recipes, rules, how the looks work, testing |
API and data
| Guide | Covers |
|---|---|
| api-integration.md | React Query patterns, CRUD, data refresh, error handling |
| sdk.md | Regenerating the TypeScript SDK (waldur-js-client) from the backend schema |
| useManagedMutation.md | Mutation hook for modals: notifications, refetch, dialog closing |
| storage-manager.md | StorageManager abstraction over localStorage |
| permissions.md | RBAC checks with hasPermission() |
| configuration-management.md | Settings UI, SettingsDescription / FeaturesEnums generation |
| invitations.md | Invitation flow architecture |
Deployment and infra
| Guide | Covers |
|---|---|
| micro-apps.md | apps/* build/serve pipeline, ASSET_PATH, waldur.deploy, adding a new micro-app |
Localization and terminology
| Guide | Covers |
|---|---|
| i18n.md | Translation extraction, tooling, workflow, LLM-assisted analysis |
| terminology_policy.md | UI terminology and spelling conventions |
Scripts in this directory
| Script | Purpose |
|---|---|
| update-local-sdk.sh | Regenerate and link the local TypeScript SDK (see sdk.md) |
| generate-sdk-catalog.py | Generate a catalog of SDK functions from the OpenAPI schema |
| generate-sdk-claude-md.py | Generate SDK usage notes for LLM context |