A user-friendly, modern web application for creating devfile 2.3.0 configuration files through an interactive step-by-step wizard interface.
The Devfile GUI Wizard simplifies the process of creating devfile YAML configurations by providing an intuitive, guided experience. No need to memorize the devfile schema or YAML syntaxβjust fill out the forms and download your ready-to-use devfile.yaml.
- β¨ 8-Step Wizard Interface - Guided workflow through all devfile sections
- π§© Complete Devfile 2.3.0 Support - Every field of the schema, including parent overrides
- π― Real-time YAML Preview - See your devfile generated as you type
- β Built-in Validation - Schema compliance plus the devfile/api validation rules, reported per step
- π₯ One-Click Download - Export your devfile.yaml instantly
- π Copy to Clipboard - Quick copy functionality
- π¨ Responsive Design - Works on desktop, tablet, and mobile
- β©οΈ Edit Any Step - Navigate back to modify previous sections
- βοΈ Skip Optional Steps - Streamlined workflow
- π Reset Wizard - Start fresh at any time
- π No Backend Required - Fully client-side application
- Basic Information - Metadata (name, version, description, language, tags, architectures, ...) and devfile attributes
- Parent - Inherit from a parent devfile by URI, registry id or DevWorkspaceTemplate, and override any part of it
- Projects - Projects, starter projects and dependent projects, from Git or Zip sources
- Components - Containers, volumes, Kubernetes and OpenShift resources, and image builds
- Commands - Exec, apply and composite commands, with groups and labels
- Events - Lifecycle event bindings (preStart, postStart, preStop, postStop)
- Variables - Key-value pairs for substitution
- Review & Download - Summary, validation report and download
- Node.js 18.x or higher
- npm 9.x or higher
-
Clone the repository:
git clone https://github.com/yourusername/devfile-gui-wizard.git cd devfile-gui-wizard -
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser and navigate to
http://localhost:5173
| Command | Description |
|---|---|
npm install |
Install dependencies |
npm run dev |
Start development server (with hot reload) |
npm run build |
Build for production |
npm run preview |
Preview production build locally |
npm test |
Run the whole test suite with Playwright |
npm run test:unit |
Run the serializer, validator and schema compliance tests |
npm run test:e2e |
Run the browser tests |
npm run test:ui |
Run tests in interactive UI mode |
npm run test:debug |
Run tests in debug mode |
The project uses Playwright both for unit tests of the devfile serializer and validator, and for end-to-end tests of the wizard.
-
First time setup - Install Playwright browsers:
npx playwright install
-
Run tests:
npm test -
Interactive mode (see tests run in real-time):
npm run test:ui
The test suite includes:
- Schema Compliance - Generated devfiles are validated against the published devfile 2.3.0 JSON schema, and the suite fails if any field of that schema cannot be produced by the wizard
- Serializer and validator - One test per serialization and validation rule
- Quarkus Devfile Generation - Rebuilds the Quarkus API Example devfile through the UI
- Full UI coverage - Parent, the three project lists, every component and command type, variables, and the validation feedback
See tests/README.md for detailed testing documentation.
The application can be deployed to OpenShift using Kustomize. The deployment manifests are located in the openshift/ directory.
- OpenShift CLI (
oc) or Kubernetes CLI (kubectl) installed - Access to an OpenShift cluster
- Container image built and pushed to a registry (automatically built via GitHub Actions)
-
Set your namespace (optional):
oc project your-project-name # or create a new project oc new-project devfile-gui-wizard -
Deploy using Kustomize:
kubectl apply -k openshift
Or with
oc:oc apply -k openshift
-
Get the application URL:
oc get route devfile-gui-wizard -o jsonpath='{.spec.host}'
# Check deployment status
kubectl get deployment devfile-gui-wizard
# Check pods
kubectl get pods -l app=devfile-gui-wizard
# Check service
kubectl get service devfile-gui-wizard
# Check route (OpenShift)
oc get route devfile-gui-wizardThe deployment uses the image ghcr.io/ibuziuk/devfile-gui-wizard:latest by default. To customize:
-
Update image tag: Edit
openshift/kustomization.yaml:images: - name: ghcr.io/ibuziuk/devfile-gui-wizard newName: ghcr.io/ibuziuk/devfile-gui-wizard newTag: v1.0.0 # or specific commit hash
-
Adjust replica count: Edit
openshift/kustomization.yaml:replicas: - name: devfile-gui-wizard count: 3
-
Set namespace: Edit
openshift/kustomization.yaml:namespace: my-project
Before applying, preview what will be deployed:
kubectl kustomize openshiftTo remove all resources:
kubectl delete -k openshift- Frontend Framework: React 18.3.1
- Styling: Tailwind CSS 3.4.0 with @tailwindcss/forms plugin
- Build Tool: Vite 5.4.0
- YAML Generation: js-yaml 4.1.0
- State Management: React useReducer + Context API
- Language: JavaScript (ES6+)
devfile-gui-wizard/
βββ src/
β βββ components/
β β βββ common/ # Reusable UI components (Button, Card, Alert, Badge)
β β βββ forms/ # Field components (Input, Select, repeaters, attributes editor)
β β βββ editors/ # Editors for components, commands, projects, endpoints, git sources
β β βββ wizard/ # Wizard navigation, progress bar and per-step validation
β β βββ steps/ # Individual wizard step components
β β βββ preview/ # YAML preview component
β βββ hooks/
β β βββ useWizardState.jsx # State management
β βββ utils/ # Utility functions
β β βββ devfileGenerator.js # Devfile serialization and validation
β β βββ factories.js # Factories for every editable devfile element
β β βββ downloadFile.js # File download utility
β β βββ constants.js # App constants
β βββ App.jsx # Root component
β βββ main.jsx # Application entry point
β βββ index.css # Global styles
βββ tests/
β βββ unit/ # Serializer, validator and schema compliance tests
β βββ e2e/ # Browser tests
β βββ schema/ # Vendored devfile 2.3.0 JSON schema
βββ index.html # HTML entry point
βββ package.json # Dependencies and scripts
βββ vite.config.js # Vite configuration
βββ tailwind.config.js # Tailwind configuration
βββ postcss.config.js # PostCSS configuration
βββ CLAUDE.md # Claude Code instructions
βββ README.md # This file
-
State Management: The application uses React's
useReducerhook combined with Context API to manage the wizard state and devfile data. -
Validation:
validateDevfileapplies the schema constraints and the devfile/api validation rules to the whole devfile. Each step shows the messages it is responsible for, and the review step shows all of them; errors block the download, warnings do not. -
YAML Generation: The serializer walks the devfile schema explicitly instead of cleaning up the UI state, so wizard-only bookkeeping can never leak into the output and empty fields are left out. The
js-yamllibrary then renders the resulting object. -
Download: The browser's Blob API creates a downloadable file from the generated YAML content.
The wizard covers the whole devfile 2.3.0 schema:
- Metadata: name (or generateName), version, displayName, description, icon, language, projectType, provider, tags, architectures, website, supportUrl, globalMemoryLimit and attributes
- Parent: inheritance by uri, registry id or DevWorkspaceTemplate, with overrides for components, commands, the three project lists, variables and attributes
- Projects: projects, starter projects and dependent projects, from Git (multiple remotes, checkoutFrom) or Zip sources
- Components:
- Container (image, command, args, env, volume mounts, endpoints, requests and limits, mountSources, sourceMapping, dedicatedPod, deployment and service annotations)
- Volume (size, ephemeral)
- Kubernetes and OpenShift resources (uri or inlined, deployByDefault, endpoints)
- Image builds (dockerfile from a uri, a devfile registry or a git repository)
- Commands: exec, apply and composite, each with a group, a label and attributes
- Events: preStart, postStart, preStop, postStop
- Variables: string substitution with
{{variable}}syntax - Attributes: free-form YAML on the devfile, metadata, components, commands, projects and endpoints
SCHEMA_COVERAGE.md lists every field and the validation rules applied on
top of the schema.
- Devfile Official Documentation
- Devfile 2.3.0 Schema
- GitHub Issue #1765 - Original Feature Request
- React Documentation
- Tailwind CSS Documentation
- Vite Documentation
This project is open source and available under the Apache License Version 2.0.
- Built with Claude Code
- Devfile specification by the Devfile Community
- UI components styled with Tailwind CSS
For issues and questions use the main Devfile issue tracker
Contributions are most welcome!
Made with β€οΈ for the Devfile community