mirror of
https://github.com/Novaloop-AG/healthchat-web.git
synced 2026-10-31 08:15:07 +00:00
2.9 KiB
2.9 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Commands
Development
yarn start- Run development server on http://localhost:8080yarn start:https- Run development server with HTTPSyarn build- Production build (outputs to webapp/)yarn dist- Create distribution tarball
Testing
yarn test- Run Jest unit testsyarn test:playwright- Run Playwright e2e testsyarn test:playwright:open- Open Playwright test UIyarn coverage- Run tests with coverage reporting
To run a single test file:
yarn test path/to/test-file.test.tsyarn test:playwright path/to/e2e-test.ts
Code Quality
yarn lint- Run all linters (TypeScript, ESLint, Stylelint)yarn lint:js-fix- Auto-fix ESLint issuesyarn lint:types- TypeScript type checking onlyyarn lint:style- Check CSS/PostCSS styles
Utilities
yarn make-component- Scaffold new React componentyarn i18n- Manage translationsyarn storybook- Run Storybook on port 6007
Architecture
This is Element Web, a Matrix client built with React and TypeScript, customized as "HealthChat". Key architectural patterns:
Component Structure
The application follows a hierarchical component structure:
MatrixChat- Root component managing the entire application stateLeftPanel- Room list, spaces, and navigationMainSplit- Central room view with messages and inputRightPanel- Member list, room info, and contextual panels
Components are organized in /src/components/:
/structures/- Major layout components/views/- Reusable UI components grouped by function (auth, dialogs, messages, rooms, settings)
State Management
Uses Flux architecture with:
- Centralized dispatcher in
/src/dispatcher/ - Stores in
/src/stores/as singletons - Actions dispatched through
dis.dispatch()
Styling
- PostCSS files with
.pcssextension - BEM-like naming:
mx_ComponentName_element - Component styles co-located with components (e.g.,
_MessageTile.pcss) - Theming via CSS custom properties
Matrix Integration
- Uses
matrix-js-sdkfor all Matrix protocol operations - Client instance accessed via
MatrixClientPeg - Room and event handling through SDK abstractions
Module System
Plugin architecture in /src/modules/:
- Allows runtime extension of functionality
- Module API for registering custom components and handlers
Testing Patterns
- Unit tests in
/test/unit-tests/using Jest - E2E tests in
/playwright/e2e/using Playwright - Mock Matrix client and SDK extensively in tests
- Component tests via Storybook
Important Conventions
- TypeScript strict mode - always use explicit types
- Functional components with hooks preferred over class components
- Translations use
_t()function with hierarchical keys - 4-space indentation, 120 character line limit
- Component files: UpperCamelCase, utilities: kebab-case