Getting Started
This section covers everything you need to set up your development environment and create your first widget from the template.
Table of Contents
Prerequisites and Setup
Reference: Pre-requisites
Before starting widget development, complete the following setup steps:
Required Setup
-
Development Credentials
- GitLab access with appropriate permissions
- NPM token for private package registry
- Portal access credentials
-
Software Installation
- VS Code or preferred IDE
- Git version control
- Node.js (v16 or higher)
-
Configuration
- Configure NPM registry authentication
- Set up SSH keys for GitLab
- Configure Prettier for code formatting
For detailed setup instructions, follow the complete Prerequisites Guide.
Creating the Widget Repository
Reference: From Template Tutorial
Create your widget repository using the provided template:
Steps Overview
-
Create Repository from Template
- Follow naming convention:
widgets-{vendor-name}-{widget-name} - Example:
widgets-acme-kpi-tracker - See Creating Repository
- Follow naming convention:
-
Clone Repository Locally
- Clone using SSH
- Install dependencies with
npm install - See Cloning Repository
-
Run Setup Wizard
- Execute
npm run setup - Configure widget type (Platform: 0, Dashboard: 1, Universal: 2)
- Provide widget name, vendor prefix, and project ID
- See Setup Wizard
- Execute
For complete step-by-step instructions, refer to the From Template Tutorial.
Understanding Project Structure
Reference: Structure Widget Template Repository
Repository Structure
widgets-acme-kpi-tracker/
├── .husky/ # Pre-commit hooks
├── .vscode/ # VS Code configuration
├── public/ # Static assets
│ └── preview.svg # Widget preview image (88x64px)
├── src/
│ ├── widget/ # Main widget implementation
│ │ ├── widget.tsx # Main widget component
│ │ └── widget-settings.tsx # Widget settings component
│ ├── widget-preview/ # Widget preview for composer
│ │ └── widget-preview.tsx
│ ├── types/ # TypeScript type definitions
│ ├── hooks/ # Custom React hooks
│ ├── utils/ # Utility functions
│ ├── constants/ # Constants and configuration
│ ├── main.tsx # Dev mode entry point
│ └── local-widget.tsx # Dev mode mock data
├── webpack/ # Webpack configuration
│ ├── webpack.common.js
│ ├── webpack.dev.js
│ ├── webpack.prod.js
│ └── webpack.config.js
├── widget-config.json # Widget configuration
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── .gitlab-ci.yml # CI/CD pipeline
├── .eslintrc.js # ESLint configuration
├── .prettierrc # Prettier configuration
└── README.md # Project documentation
Key Files
widget-config.json
Main widget configuration file containing:
- Widget metadata (ID, port, name, vendor)
- Widget type and placement rules
- Module federation exposes
- Settings schema
- Layout constraints
- Note: This file is preconfigured during the setup wizard step (see Creating the Widget Repository)
src/widget/widget.tsx
Main widget component that:
- Receives platform props
- Implements widget logic
- Renders widget UI
src/widget/widget-settings.tsx
Settings component that:
- Provides widget configuration interface
- Receives settingsSchema from widget-config.json
src/widget-preview/widget-preview.tsx
Preview component that:
- Shows widget preview in Dashboard Composer (Host application)
- Can be static or have simple interactive preview
Next Steps
Now that you have your project set up and understand the structure, you're ready to:
- Dashboard Integration - Learn how widgets integrate with the platform
- Configuration - Configure your widget's metadata and settings
- Core Features - Implement essential widget functionality
Continue to: Dashboard Integration →