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.
- β¨ 7-Step Wizard Interface - Guided workflow through all devfile sections
- π― Real-time YAML Preview - See your devfile generated as you type
- β Built-in Validation - Ensures devfile 2.3.0 compliance
- π₯ 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 - Project metadata (name, version, description, language)
- Projects - Source code repositories (Git or Zip)
- Components - Development environment containers, volumes, resources
- Commands - Build, run, test, and debug commands
- Events - Lifecycle event bindings (preStart, postStart, etc.)
- Variables - Key-value pairs for substitution
- Review & Download - Summary view with download functionality
- 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 end-to-end tests with Playwright |
npm run test:ui |
Run tests in interactive UI mode |
npm run test:debug |
Run tests in debug mode |
The project includes end-to-end tests using Playwright to verify the wizard functionality and devfile generation.
-
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:
- Quarkus Devfile Generation - Generates a simplified version of the Quarkus API Example devfile
- Schema Compliance - Verifies generated devfiles comply with Devfile 2.3.0 specification
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)
β β βββ forms/ # Form components (Input, Select, TextArea)
β β βββ wizard/ # Wizard navigation and container
β β βββ steps/ # Individual wizard step components
β β βββ preview/ # YAML preview component
β βββ hooks/ # Custom React hooks
β β βββ useWizardState.jsx # State management
β β βββ useYamlGenerator.jsx # YAML generation
β βββ utils/ # Utility functions
β β βββ devfileGenerator.js # Devfile cleaning/validation
β β βββ validation.js # Form validation rules
β β βββ downloadFile.js # File download utility
β β βββ constants.js # App constants
β βββ App.jsx # Root component
β βββ main.jsx # Application entry point
β βββ index.css # Global styles
βββ public/ # Static assets
βββ 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: Each step includes field-level validation to ensure data integrity and devfile 2.3.0 compliance.
-
YAML Generation: The
js-yamllibrary converts the structured JavaScript object into properly formatted YAML, with custom cleaning to remove empty fields. -
Download: The browser's Blob API creates a downloadable file from the generated YAML content.
This wizard supports all major devfile 2.3.0 features:
- Metadata: name, version, displayName, description, language, provider, tags, website, supportUrl
- Projects: Git and Zip sources with checkoutFrom options
- Components:
- Container (with image, env vars, volume mounts, endpoints, resource limits)
- Volume (with size and ephemeral options)
- Kubernetes/OpenShift resources
- Image builds
- Commands:
- Exec (command execution)
- Apply (resource application)
- Composite (command grouping)
- Events: preStart, postStart, preStop, postStop
- Variables: String substitution with
{{variable}}syntax
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- 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
Made with β€οΈ for the Devfile community