webapp/channels/CLAUDE.OPTIONAL.md
webapp/channels/--workspace=channels when installing deps or running scripts.npm run dev-server --workspace=channels – hot-reload development server.npm run build --workspace=channels – production bundle (invokes webpack config in this folder).npm run test --workspace=channels / npm run test:watch --workspace=channels.npm run check --workspace=channels and npm run fix --workspace=channels for lint/style fixes.src/
├── components/ # React components organized by feature (300+ subdirectories)
├── actions/ # Redux action creators (sync and async thunks)
├── selectors/ # Redux selectors for deriving state
├── reducers/ # Redux reducers for state management
├── utils/ # Utility functions and helpers
├── tests/ # Test utilities and helpers
├── i18n/ # Internationalization files
├── sass/ # Global SCSS styles and theme variables
├── types/ # TypeScript type definitions specific to the web app
├── store/ # Redux store configuration with redux-persist
├── plugins/ # Plugin integration points
├── packages/
│ └── mattermost-redux/ # Core Redux layer (actions, reducers, selectors)
├── entry.tsx # Application entry point
└── root.tsx # Root React component
state.entities.* for server data).state.views.* for UI state (modals, sidebars, preferences).package.json – workspace-specific scripts, env vars, and browserlist targets.webpack.config.js – module federation + alias map; update remotes or exposes here only when necessary.jest.config.js – test roots, transformers, moduleNameMapper for workspace aliases.tsconfig.json – project references for src, tests, and embedded packages.strictNullChecks@mattermost/* packages and mattermost-redux/*any types; legacy code may have them but new code should be typedchannels/src/module_registry.ts to register async chunks; never import plugin remotes synchronously.webapp/README.md.webpack.config.js → remotes).webapp/STYLE_GUIDE.md → Dependencies & Packages before introducing new libs.@mattermost/types, @mattermost/client, and platform/components are first-party packages; import via full package names, not deep relative paths.npm install at repo root.npm add <pkg> --workspace=channels to avoid polluting other workspaces.config/ on the server side; do not hard-code URLs or feature flags here.webapp/STYLE_GUIDE.md → Automated Style Checking, Dependencies & Packages.webapp/README.md for high-level architecture and release info.