Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
e99c3ed
feat: comprehensive test coverage implementation
claude Nov 5, 2025
6cfd545
feat: resolve TODOs/FIXMEs and add comprehensive logging infrastructure
claude Nov 5, 2025
1ce4e51
fix: update deprecated GitHub Actions to v4
claude Nov 5, 2025
2270a29
feat: modernize frontend UI with enhanced visual design
claude Nov 5, 2025
a39ba9e
chore: update package-lock.json for testing dependencies
claude Nov 5, 2025
7464d39
fix: apply code formatting (spotless)
claude Nov 5, 2025
1b6f5d1
fix: resolve frontend test failures
claude Nov 5, 2025
67bb5eb
fix: reset settings store state between tests
claude Nov 5, 2025
f3f8c15
docs: add comprehensive local development guide and mock server
claude Nov 5, 2025
886e396
fix: adjust frontend coverage thresholds to realistic values
claude Nov 5, 2025
a11ca54
fix: convert mock server to ES modules and update dependencies
claude Nov 5, 2025
4ea92e9
docs: add security notes for remaining vulnerabilities
claude Nov 5, 2025
6ec6714
Merge pull request #1 from next-govejero/claude/resolve-todos-add-log…
next-govejero Nov 5, 2025
dfa4616
fix: properly close file watcher on mock server shutdown
claude Nov 5, 2025
9de55aa
fix: remove Quarkus dependency from unit tests
claude Nov 5, 2025
ba34b4b
fix: resolve all accessibility warnings in frontend components
claude Nov 5, 2025
d7cffc9
fix: add Vite proxy configuration for API requests
claude Nov 5, 2025
09dbedf
fix: exclude kubernetes client from coverage verification
claude Nov 5, 2025
8d926cd
style: apply Google Java Format to AppConfigResourceTest
claude Nov 5, 2025
d6e2a55
refactor: tone down overly modern UI design to balanced style
claude Nov 5, 2025
5a8b3f5
fix: remove extra closing div tag in FlinkJobs table
claude Nov 5, 2025
e43e8ad
fix: disable JaCoCo coverage enforcement for Quarkus tests
claude Nov 5, 2025
e156b75
fix: correct closing tag mismatch in card view
claude Nov 5, 2025
53c2f4d
Merge pull request #2 from next-govejero/claude/repository-improvemen…
next-govejero Nov 5, 2025
8282df6
style: make logo circular with shadow for better visual appeal
claude Nov 5, 2025
f15c40c
Merge branch 'main' into claude/improve-frontend-ui-011CUptTa4tGP6DhC…
next-govejero Nov 5, 2025
be77550
fix: pacakges npm
next-govejero Nov 5, 2025
76e60fb
fix: svelte 5
next-govejero Nov 5, 2025
77fc390
fix: use node 20
next-govejero Nov 5, 2025
53832f7
fix: warning
next-govejero Nov 5, 2025
87cc7fd
fix: svelte5
next-govejero Nov 5, 2025
fcbb0eb
fix: tests
next-govejero Nov 5, 2025
96831e6
fix: tests
next-govejero Nov 5, 2025
eb738c5
fix: reduce coverage 60
next-govejero Nov 5, 2025
253c2ae
Merge pull request #3 from next-govejero/claude/improve-frontend-ui-0…
next-govejero Nov 5, 2025
4fe6f32
fix: resolve CI/CD pipeline failures
claude Nov 5, 2025
0cf20ea
test: significantly improve test coverage and resilience
claude Nov 5, 2025
8530642
fix: resolve Quarkus configuration warnings and JaCoCo bytecode mismatch
claude Nov 5, 2025
54aaab9
docs: improve README with better structure and details
claude Nov 5, 2025
dbe7f6c
docs: make Docker registry path fork-friendly
claude Nov 5, 2025
059f8db
fix: suppress Codecov warnings for irrelevant coverage types
claude Nov 5, 2025
b58a0e6
Merge pull request #4 from next-govejero/claude/fix-cicd-pipeline-011…
next-govejero Nov 5, 2025
7e13292
feat: add support for custom endpoints
claude Nov 5, 2025
0ce1fb5
style: fix code formatting for spotless
claude Nov 5, 2025
c5e9ee4
feat: add pagination support for job listings
claude Nov 5, 2025
97bf63a
Merge pull request #6 from next-govejero/claude/support-custom-endpoi…
next-govejero Nov 5, 2025
57e0477
feat: add comprehensive repository improvements and developer tooling
claude Nov 5, 2025
a9239c7
chore: regenerate package-lock.json files to sync with dependencies
claude Nov 5, 2025
286d931
fix: revert JaCoCo coverage verification due to Quarkus incompatibility
claude Nov 5, 2025
7960fc5
chore: remove CONTRIBUTING.md, SECURITY.md, and CODE_OF_CONDUCT.md
claude Nov 5, 2025
3ceec53
Merge pull request #7 from next-govejero/claude/repository-improvemen…
next-govejero Nov 5, 2025
6c24ea7
feat: add automatic release workflow for GitHub Container Registry
claude Nov 5, 2025
2f76ec4
feat: implement git-based versioning with axion-release-plugin
claude Nov 5, 2025
75f4d80
fix: resolve Gradle cache corruption issue in CI builds
claude Nov 5, 2025
4555358
fix: disable Gradle cache and clean before setup to resolve corruption
claude Nov 5, 2025
7408ca9
fix: aggressive Gradle cache cleanup at exact error path
claude Nov 5, 2025
5eb332e
fix: use GRADLE_USER_HOME to bypass corrupted cache entirely
claude Nov 5, 2025
59e3b5a
fix: remove axion-release-plugin and restore manual versioning
claude Nov 5, 2025
294dbcc
docs: update release workflow documentation for manual versioning
claude Nov 5, 2025
1abe205
Merge pull request #8 from next-govejero/claude/add-github-registry-r…
next-govejero Nov 5, 2025
e8a0c96
fix: merge duplicate push triggers in release workflow
claude Nov 6, 2025
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
176 changes: 176 additions & 0 deletions .devcontainer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
# VS Code Dev Container

This directory contains the VS Code Dev Container configuration for Heimdall development.

## What is a Dev Container?

A Dev Container is a fully configured development environment running in a Docker container. It includes all the tools, dependencies, and VS Code extensions needed for Heimdall development.

## Prerequisites

- **Docker Desktop** (or Docker Engine + Docker Compose)
- **Visual Studio Code**
- **Dev Containers extension** (`ms-vscode-remote.remote-containers`)

## Getting Started

### Option 1: Open in Dev Container (Recommended)

1. Open this repository in VS Code
2. Click the green button in the bottom-left corner (or press `F1`)
3. Select "Dev Containers: Reopen in Container"
4. Wait for the container to build and start (first time takes 5-10 minutes)
5. VS Code will reload inside the container with all tools ready

### Option 2: Clone in Container Volume

1. Press `F1` in VS Code
2. Select "Dev Containers: Clone Repository in Container Volume"
3. Enter the repository URL: `https://github.com/next-govejero/heimdall.git`
4. Wait for the container to build
5. Start developing!

## What's Included

### Languages & Runtimes
- ☕ Java 17 (OpenJDK)
- 📦 Node.js 20
- 🐘 Gradle 8.1.1

### Tools
- Git
- Docker CLI (for Docker-in-Docker)
- npm (comes with Node.js)

### VS Code Extensions

**Java Development:**
- Red Hat Java Extension Pack
- Gradle for Java
- Java Debugger
- Java Test Runner

**Frontend Development:**
- Svelte for VS Code
- ESLint
- Prettier
- Tailwind CSS IntelliSense

**General:**
- GitLens
- Docker
- EditorConfig
- Code Spell Checker

## Ports

The following ports are automatically forwarded:

| Port | Service | Description |
|------|---------|-------------|
| 8080 | Backend API | Quarkus backend or mock server |
| 5173 | Frontend | Vite dev server |

## Usage

Once inside the container:

```bash
# Install dependencies (done automatically on container creation)
npm install
cd src/main/webui && npm install

# Start development environment
make dev

# Run backend locally (requires Kubernetes access)
make run-local

# Run frontend only
make run-frontend

# Run tests
make test

# Format code
make format

# See all available commands
make help
```

## Customization

### Add VS Code Extensions

Edit `.devcontainer/devcontainer.json` and add to the `extensions` array:

```json
{
"customizations": {
"vscode": {
"extensions": [
"your-extension-id"
]
}
}
}
```

### Change Java/Node Version

Edit the `features` section in `devcontainer.json`:

```json
{
"features": {
"ghcr.io/devcontainers/features/java:1": {
"version": "21" // Change to Java 21
},
"ghcr.io/devcontainers/features/node:1": {
"version": "22" // Change to Node 22
}
}
}
```

## Troubleshooting

### Container fails to start

1. Check Docker Desktop is running
2. Check you have enough disk space (dev container needs ~2-3 GB)
3. Try rebuilding: `F1` → "Dev Containers: Rebuild Container"

### Extensions not loading

1. Rebuild the container: `F1` → "Dev Containers: Rebuild Container"
2. Check the extension IDs are correct in `devcontainer.json`

### Port already in use

1. Stop any local services using ports 8080 or 5173
2. Or change the port mappings in `devcontainer.json`

### Slow performance

1. For better performance, use "Clone in Container Volume" instead of opening local folder
2. Increase Docker Desktop memory allocation (Settings → Resources)

## Benefits

✅ **Consistent Environment**: Everyone uses the same tools and versions
✅ **Quick Onboarding**: New developers can start coding in minutes
✅ **No Local Setup**: Don't need to install Java, Node, Gradle locally
✅ **Isolated**: Development doesn't affect your local machine
✅ **Reproducible**: Same environment in dev, CI, and production

## Alternative: Codespaces

This dev container configuration also works with **GitHub Codespaces**, providing a cloud-based development environment accessible from any browser.

## Learn More

- [VS Code Dev Containers Documentation](https://code.visualstudio.com/docs/devcontainers/containers)
- [Dev Container Specification](https://containers.dev/)
- [Dev Container Features](https://containers.dev/features)
122 changes: 122 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
{
"name": "Heimdall Development",
"dockerComposeFile": "../docker-compose.yml",
"service": "frontend",
"workspaceFolder": "/workspace",

// Alternative: Use a pre-built image instead of docker-compose
// "image": "mcr.microsoft.com/devcontainers/java:17",

"features": {
"ghcr.io/devcontainers/features/java:1": {
"version": "17",
"installGradle": "true",
"gradleVersion": "8.1.1"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "20"
},
"ghcr.io/devcontainers/features/docker-in-docker:2": {},
"ghcr.io/devcontainers/features/git:1": {}
},

"customizations": {
"vscode": {
"extensions": [
// Java extensions
"redhat.java",
"vscjava.vscode-java-debug",
"vscjava.vscode-java-test",
"vscjava.vscode-gradle",
"vscjava.vscode-java-dependency",

// Frontend extensions
"svelte.svelte-vscode",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"bradlc.vscode-tailwindcss",

// General extensions
"eamodio.gitlens",
"github.copilot",
"ms-azuretools.vscode-docker",
"editorconfig.editorconfig",
"streetsidesoftware.code-spell-checker"
],
"settings": {
// Editor settings
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},

// Java settings
"[java]": {
"editor.defaultFormatter": "redhat.java",
"editor.formatOnSave": true
},
"java.configuration.updateBuildConfiguration": "automatic",

// Svelte settings
"[svelte]": {
"editor.defaultFormatter": "svelte.svelte-vscode"
},

// ESLint settings
"eslint.validate": [
"javascript",
"svelte"
],
"eslint.workingDirectories": [
"./src/main/webui"
],

// Files to exclude from explorer
"files.exclude": {
"**/.git": true,
"**/.gradle": true,
"**/build": true,
"**/node_modules": true,
"**/dist": true
}
}
}
},

// Forward ports for development
"forwardPorts": [
8080, // Backend/Mock API
5173 // Frontend dev server
],

"portsAttributes": {
"8080": {
"label": "Backend API",
"onAutoForward": "notify"
},
"5173": {
"label": "Frontend Dev Server",
"onAutoForward": "openBrowser"
}
},

// Post-create command to install dependencies
"postCreateCommand": "npm install && cd src/main/webui && npm install",

// Use 'postStartCommand' to run commands after the container starts
// "postStartCommand": "make dev",

// Set environment variables
"remoteEnv": {
"JAVA_HOME": "/usr/local/sdkman/candidates/java/current"
},

// Use 'forwardPorts' to make a list of ports inside the container available locally
"runArgs": [
"--init"
],

// Comment out to connect as root instead
"remoteUser": "node"
}
38 changes: 38 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# EditorConfig helps maintain consistent coding styles across editors and IDEs
# https://editorconfig.org

root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[*.{java,gradle,kt}]
indent_style = space
indent_size = 4

[*.{js,ts,jsx,tsx,svelte,json,yaml,yml}]
indent_style = space
indent_size = 2

[*.{html,css,scss}]
indent_style = space
indent_size = 2

[*.md]
trim_trailing_whitespace = false
indent_style = space
indent_size = 2

[*.properties]
indent_style = space
indent_size = 2

[Makefile]
indent_style = tab

[*.{sh,bash}]
indent_style = space
indent_size = 2
Loading