Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
712e21d
chore: initial commit with Claude.md and .mcp.json
ibuziuk Jan 12, 2026
322ac6c
feat: implement React + Tailwind wizard for devfile 2.3.0 creation
ibuziuk Jan 12, 2026
e87f69c
chore: udpate Claude.md
ibuziuk Jan 12, 2026
e86d924
docs: Update README.md with badges
ibuziuk Jan 12, 2026
1c50e3b
chore: update devfile
ibuziuk Jan 12, 2026
f9385d7
feat: allow all hosts
ibuziuk Jan 12, 2026
23f7e76
chore: update devfile with ephemeral attribute
ibuziuk Jan 12, 2026
53a34a1
chore: Use'generateName' in devfile.yaml
ibuziuk Jan 12, 2026
0505616
chore: containerizing the app
ibuziuk Jan 12, 2026
3d883ba
chore: adding build / push image GH action
ibuziuk Jan 12, 2026
e2507a6
chore: updating .gitignore
ibuziuk Jan 12, 2026
dd87ab7
chore: add kustomize setup for deploying on OpenShift
ibuziuk Jan 12, 2026
9c47d5c
fix: update gh action
ibuziuk Jan 12, 2026
43626dc
chore: Add deploy command to devfile.yaml
ibuziuk Jan 12, 2026
5c3ec54
chore: fix gh action
ibuziuk Jan 12, 2026
88b8291
chore: fix gh action
ibuziuk Jan 12, 2026
85d9950
feat: update OpenShift deployment instructions
ibuziuk Jan 12, 2026
598663c
fix: openshift deployment
ibuziuk Jan 12, 2026
821edda
fix: fixing OpenShift deployment
ibuziuk Jan 12, 2026
2fa59ec
fix: Improving the project selection step
ibuziuk Jan 13, 2026
93cd135
fix: udpate wording for project definition step
ibuziuk Jan 13, 2026
905059d
fix: udpate download name
ibuziuk Jan 13, 2026
de4740e
fix: progress bar
ibuziuk Jan 13, 2026
a63085c
fix: line UI for steps
ibuziuk Jan 13, 2026
09797f9
fix: wizard line step UI
ibuziuk Jan 13, 2026
9851958
feat: devfile cleanup command
ibuziuk Jan 13, 2026
39c8de2
fix: UI fixup
ibuziuk Jan 13, 2026
ed16d19
feat: Adding schema coverage
ibuziuk Jan 13, 2026
4276f6e
chore: adding extensions.json
ibuziuk Jan 13, 2026
a005372
chore: adding Anthropic claude extension
ibuziuk Jan 13, 2026
5720eff
fix: update 'build-push-image' action
ibuziuk Jan 22, 2026
a85a23f
chore: License Apache 2.0
ibuziuk Jan 23, 2026
1612256
feat: Adding LF Projects, LLC footer
ibuziuk Jan 23, 2026
b718e92
feat: Implementing the 'Build and Deploy' GH action
ibuziuk Jan 23, 2026
eb0307a
chore: temporarily removing GH action for building image from the ini…
ibuziuk Jan 23, 2026
f971dbe
fix: devfile component type
ibuziuk Jan 27, 2026
cbf6d45
fix: devfile command type
ibuziuk Jan 27, 2026
bac0f25
test: initial playwright coverage
ibuziuk Jan 27, 2026
585d730
fix: using in devfile
ibuziuk Jan 29, 2026
b76eca6
docs: Community Support / issue tracker
ibuziuk Jan 29, 2026
8ed46d9
feat: add GitHub repo link
ibuziuk Jan 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
node_modules
npm-debug.log
dist
.git
.gitignore
README.md
.env
.env.local
.env.*.local
.vscode
.idea
*.log
.DS_Store
coverage
.nyc_output
Claude.md
.mcp.json
.claude
13 changes: 10 additions & 3 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,17 @@ jobs:
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1

- name: Make target export directory
run: mkdir -p public/
- name: Setup Node.js
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: '20'
cache: 'npm'

- name: Install dependencies
run: npm ci

## TODO: Add site build and export steps here, target public/ for export directory
- name: Build site
run: npm run build

- name: Copy CNAME
run: cp CNAME public
Expand Down
110 changes: 110 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

# Dependencies
node_modules
.pnp
.pnp.js

# Build outputs
dist
dist-ssr
build
*.local

# Environment variables
.env
.env.local
.env.development.local
.env.test.local
.env.production.local

# Testing
coverage
.nyc_output
*.lcov

# Editor directories and files
.vscode/*
!.vscode/extensions.json
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
.idea
*.swp
*.swo
*~
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# OS files
Thumbs.db
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Desktop.ini

# Temporary files
*.tmp
*.temp
.cache
.parcel-cache

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional stylelint cache
.stylelintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variable files
.env*.local

# Vite
.vite

# TypeScript
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Storybook build outputs
storybook-static

# Temporary folders
tmp/
temp/
16 changes: 16 additions & 0 deletions .mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
},
"playwright": {
"type": "stdio",
"command": "npx",
"args": [
"@playwright/mcp@latest"
],
"env": {}
}
}
}
9 changes: 9 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"Anthropic.claude-code",
"github.vscode-pull-request-github",
"RooVeterinaryInc.roo-cline"
]
}
57 changes: 57 additions & 0 deletions Claude.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Overview

This repository contains a single-page React application for creating devfiles through a user-friendly GUI wizard. The application uses React and Tailwind CSS to provide a step-by-step interface for generating devfile 2.3.0 compliant YAML files.

**Key Resources:**
- Devfile specification: https://devfile.io/docs/
- Feature request: https://github.com/devfile/api/issues/1765
- Devfile 2.3.0 spec should be the target version

## Project Architecture

**Application Type:** Single-page application (SPA) with no backend or persistent state
**UI Framework:** React
**Styling:** Tailwind CSS
**Output:** Generated devfile.yaml files available for download

The application is stateless - all devfile generation happens client-side with no data persistence.

## Development Commands

This section will be populated once the project structure is initialized. Expected commands include:
- `npm install` - Install dependencies
- `npm run dev` - Start development server
- `npm run build` - Build for production
- `npm run lint` - Run linter
- `npm run test` - Run tests (if applicable)

## MCP Servers

This project uses the following MCP servers (configured in `.mcp.json`):

- **context7**: Provides up-to-date React and Tailwind CSS documentation
- **playwright**: For browser automation and testing

## Key Implementation Requirements

1. **Step-by-step wizard interface** - Guide users through devfile creation with clear, sequential steps
2. **Devfile 2.3.0 compliance** - Generated YAML must conform to the devfile 2.3.0 specification
3. **Download capability** - Users must be able to download the generated devfile.yaml
4. **Single page design** - All functionality contained in one web page with no routing
5. **No state persistence** - Application does not save or persist user data between sessions

## Devfile Concepts to Understand

When working with this codebase, familiarize yourself with these devfile concepts:
- Components (containers, volumes, kubernetes resources)
- Commands (exec, apply, composite)
- Events (preStart, postStart, preStop, postStop)
- Projects (git repositories)
- StarterProjects (templates)
- Metadata (name, version, description, attributes)

Refer to https://devfile.io/docs/ for detailed schema and examples.
50 changes: 50 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Multi-stage build for production

# Stage 1: Build the application
FROM node:18-alpine AS builder

WORKDIR /app

# Copy package files
COPY package*.json ./

# Install dependencies
RUN npm ci

# Copy source code
COPY . .

# Build the application
RUN npm run build

# Stage 2: Serve with nginx
FROM nginx:alpine

# Copy built assets from builder stage
COPY --from=builder /app/dist /usr/share/nginx/html

# Copy nginx configuration
COPY nginx.conf /etc/nginx/conf.d/default.conf

# Create nginx cache directories with world-writable permissions for OpenShift
# OpenShift will assign a random UID, so we make directories writable by any user
RUN mkdir -p /var/cache/nginx/client_temp \
&& mkdir -p /var/cache/nginx/proxy_temp \
&& mkdir -p /var/cache/nginx/fastcgi_temp \
&& mkdir -p /var/cache/nginx/uwsgi_temp \
&& mkdir -p /var/cache/nginx/scgi_temp \
&& chmod -R 777 /var/cache/nginx \
&& chmod -R 777 /var/log/nginx \
&& chmod -R 755 /etc/nginx/conf.d \
&& chmod -R 755 /usr/share/nginx/html \
&& touch /var/run/nginx.pid \
&& chmod 777 /var/run/nginx.pid

# Don't set USER - let OpenShift assign the UID
# OpenShift will enforce runAsNonRoot via security context

# Expose port 8080 (non-root)
EXPOSE 8080

# Start nginx
CMD ["nginx", "-g", "daemon off;"]
19 changes: 19 additions & 0 deletions Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Development Dockerfile
FROM node:18-alpine

WORKDIR /app

# Copy package files
COPY package*.json ./

# Install dependencies
RUN npm ci

# Copy source code
COPY . .

# Expose Vite dev server port
EXPOSE 5173

# Start development server
CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"]
Loading