Overview
The Web module is a hybrid application combining an Angular-based frontend with a Go backend server. It serves the Dashboard UI and handles web-specific logic including settings management, localization, and configuration.The Web module is responsible for presenting data fetched from the Kubernetes API through the API module in an intuitive, user-friendly interface.
Module Architecture
Dual-Layer Design
Entry Point
The Go server starts inmodules/web/main.go:
modules/web/main.go:36-62
Frontend Architecture (Angular)
Technology Stack
modules/web/package.json
Project Structure
Core Modules
- Core Module
- Chrome Module
- Common Module
Provides singleton services shared across the application:
Key Features
Material Design UI
Built with Angular Material components:src/_theming.scss:
- Light theme (
_light.scss) - Dark theme (
_dark.scss)
Resource Management
Angular services communicate with API module:Data Tables
Powered by Angular Material with sorting, filtering, and pagination:Metrics Visualization
Charts using ngx-charts and D3:Terminal Emulation
Integrated terminal using xterm.js:Internationalization (i18n)
Multi-language support using Angular i18n:modules/web/i18n/
Backend Server (Go)
Package Structure
API Endpoints
The Go server provides several web-specific APIs:GET /config
Returns application configuration:modules/web/pkg/config/
GET /api/v1/settings/global
Returns global settings:modules/web/pkg/settings/
GET /api/v1/systembanner
Returns system banner configuration:modules/web/pkg/systembanner/
GET /api/v1/locale
Returns available locales:modules/web/pkg/locale/
Route Registration
Routes are registered via init() functions:modules/web/main.go:29-33
Build Process
Development Build
- Hot module replacement
- Proxy to API module
- Source maps for debugging
Production Build
modules/web/package.json:16-18
Docker Build
Multi-stage Dockerfile:modules/web/Dockerfile
Configuration
Angular Configuration
angular.json defines build configurations:
modules/web/angular.json
Proxy Configuration
Development proxy to API module:modules/web/proxy.conf.json
Styling and Theming
SCSS Architecture
Custom Material Theme
Testing
Unit Tests (Jest)
jest.config.js.
E2E Tests (Cypress)
cypress.config.ts.
Reference:
modules/web/jest.config.jsmodules/web/cypress.config.ts
Code Quality
Linting
- ESLint: TypeScript linting
- Prettier: Code formatting
- Stylelint: SCSS linting
modules/web/package.json:19-28
Code Conventions
Follows: Reference:DEVELOPMENT.md:20
Deployment
Helm chart configuration:charts/kubernetes-dashboard/templates/deployments/web.yaml
Performance Optimizations
Lazy Loading
Lazy Loading
Resource modules are lazy-loaded to reduce initial bundle size:
AOT Compilation
AOT Compilation
Ahead-of-Time compilation for production:
- Faster rendering
- Smaller bundle size
- Early error detection
Change Detection
Change Detection
OnPush strategy for better performance:
Virtual Scrolling
Virtual Scrolling
For large lists:
Related Resources
API Module
Backend API consumed by web module
Auth Module
Authentication flow integration
Angular Documentation
Official Angular documentation
Material Design
Angular Material components