Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
4a4db39
feat(devcontainer): create 3 devcontainer configs for bilingual workshop
shawnewallace Mar 31, 2026
d89650d
fix(devcontainer): add markdown, mermaid, and marp extensions to part…
shawnewallace Mar 31, 2026
8209abb
refactor(devcontainer): remove root devcontainer.json
shawnewallace Mar 31, 2026
4ba8cc3
feat(instructions): create bilingual instruction files with applyTo p…
shawnewallace Mar 31, 2026
05110aa
refactor(instructions): remove redundant root-level copilot instructions
shawnewallace Mar 31, 2026
b897dcd
docs: update README files to reference new scoped instruction files
shawnewallace Mar 31, 2026
fbbbf18
docs: update all documentation to reference new scoped instruction files
shawnewallace Mar 31, 2026
6ca289b
feat(springboot): create multi-module Maven project structure
shawnewallace Mar 31, 2026
eb18ef3
feat(springboot): create domain entities Task, TaskId, and TaskStatus
shawnewallace Mar 31, 2026
139936c
feat(domain): add TaskRepository port interface
shawnewallace Mar 31, 2026
6771e69
test(domain): add comprehensive unit tests for Task aggregate
shawnewallace Mar 31, 2026
279cb09
feat(application): add TaskService for use case orchestration
shawnewallace Mar 31, 2026
3b7257f
test(application): add comprehensive unit tests for TaskService
shawnewallace Mar 31, 2026
e0e5c4d
fix(test): remove unused BeforeEach import from TaskServiceTest
shawnewallace Mar 31, 2026
34d7cf2
feat(infrastructure): add JPA entities and mappers
shawnewallace Mar 31, 2026
024a698
feat(infrastructure): add JPA repository implementation
shawnewallace Mar 31, 2026
3fc999e
test(infrastructure): add integration and unit tests for repository l…
shawnewallace Mar 31, 2026
867a0b9
fix: remove unused variable 'updated' in integration test
shawnewallace Mar 31, 2026
1f66f0a
feat(api): add DTOs for task API endpoints
shawnewallace Mar 31, 2026
2080f11
feat(api): add TaskController REST endpoints
shawnewallace Mar 31, 2026
42ac259
feat(api): add GlobalExceptionHandler for centralized error handling
shawnewallace Mar 31, 2026
e89b4f5
feat(api): add API integration tests and Spring Boot application
shawnewallace Mar 31, 2026
67feee1
feat(api): add OpenAPI/Springdoc documentation
shawnewallace Mar 31, 2026
762c8c7
feat(config): add Spring Boot application configuration files
shawnewallace Mar 31, 2026
98cb31e
feat(coverage): add JaCoCo coverage reporting to all modules
shawnewallace Mar 31, 2026
9a97406
feat(devcontainer): add Spring Boot build to maintainer postCreateCom…
shawnewallace Mar 31, 2026
0a9c342
docs: add devcontainer test plan for Epic #16 validation
shawnewallace Mar 31, 2026
4619c57
docs: add quick resume guide for Epic #16 work
shawnewallace Mar 31, 2026
6f0f631
feat(dev): configure H2 in-memory database for development profile
shawnewallace Mar 31, 2026
76c3ad7
docs(patterns): create comprehensive .NET to Spring Boot pattern tran…
shawnewallace Mar 31, 2026
82875bc
feat: Add Spring Boot examples to Lab 1 TDD
shawnewallace Mar 31, 2026
274b7bc
feat: Add Java/Spring Boot version of Lab 2
shawnewallace Mar 31, 2026
85fefc1
feat: Add Java/Spring Boot version of Lab 3
shawnewallace Mar 31, 2026
9f2c7e4
feat(lab10): Add bilingual .NET and Spring Boot examples
shawnewallace Mar 31, 2026
70c92bc
feat(docs): Update facilitator guides for bilingual delivery (.NET & …
shawnewallace Mar 31, 2026
0892b30
feat(readme): Update README for bilingual workshop support (.NET & Sp…
shawnewallace Mar 31, 2026
eb9b5bf
chore: Remove RESUME.md file
shawnewallace Mar 31, 2026
6f995a3
feat(epic-16): enhance architecture-reviewer agent for dual-stack sup…
shawnewallace Apr 2, 2026
b20c2e2
docs(epic-16): update custom-agent-catalog for dual-stack architectur…
shawnewallace Apr 2, 2026
1b3d738
feat(epic-16): create quality-gate agent for dual-stack quality valid…
shawnewallace Apr 2, 2026
dcbd05c
docs(epic-16): add quality-gate agent to custom-agent-catalog
shawnewallace Apr 2, 2026
e94c73c
feat(epic-16): create test-coverage agent for dual-stack coverage ana…
shawnewallace Apr 2, 2026
d4b5d2e
docs(epic-16): add test-coverage agent to custom-agent-catalog
shawnewallace Apr 2, 2026
c5ac60f
feat(epic-16): create modernization agent for Mule ESB β†’ Spring Boot …
shawnewallace Apr 2, 2026
f0f6cf6
fix(epic-16): add write capability to modernization agent
shawnewallace Apr 2, 2026
f942ff2
feat(epic-16): add Mermaid diagrams to modernization agent output
shawnewallace Apr 2, 2026
94eabb7
docs: complete enterprise Java workshop context guide
shawnewallace Apr 2, 2026
b449d65
docs: create modernization pattern library for Mule ESB β†’ Spring Boot
shawnewallace Apr 2, 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
189 changes: 189 additions & 0 deletions .devcontainer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
# DevContainer Selection Guide

This repository contains **3 devcontainer configurations** to support different workshop roles and technology stacks.

## 🎯 Which Container Should I Use?

When you open this repository in VS Code, you'll be prompted to select a devcontainer configuration. Choose based on your role:

---

### 1️⃣ **Workshop Maintainer** (Full Toolchain)

**Location:** `.devcontainer/maintainer/`

**Who should use this:**
- Workshop authors and content creators
- Facilitators preparing for dual-stack delivery
- Contributors working on both .NET and Spring Boot examples
- Anyone needing to build/test both implementations

**What's included:**
- βœ… .NET 9 SDK
- βœ… Java 21 JDK (LTS)
- βœ… Maven 3.9+ and Gradle 8+
- βœ… Node.js 20 + Marp CLI (for presentations)
- βœ… All VS Code extensions (C#, Java, Spring Boot, Markdown, Marp)
- βœ… GitHub CLI

**Builds:**
- Both `TaskManager.sln` (.NET) and `src-springboot/` (Java)
- All presentations and documentation
- Full workshop materials

---

### 2️⃣ **.NET Participant** (Streamlined)

**Location:** `.devcontainer/dotnet-participant/`

**Who should use this:**
- Workshop participants following the .NET track
- Self-paced learners using C# examples
- Developers working in .NET 9 environment

**What's included:**
- βœ… .NET 9 SDK
- βœ… C# Dev Kit extension
- βœ… GitHub Copilot extensions
- βœ… Minimal overhead for fast startup

**Auto-activates:**
- `.github/instructions/dotnet.instructions.md` (automatically loads when editing C# files)

**Builds:**
- `TaskManager.sln` (.NET solution only)

---

### 3️⃣ **Spring Boot Participant** (Streamlined)

**Location:** `.devcontainer/springboot-participant/`

**Who should use this:**
- Workshop participants following the Spring Boot track
- Enterprise Java teams modernizing from Mule ESB
- Self-paced learners using Java examples
- Developers working in Spring Boot 3.x environment

**What's included:**
- βœ… Java 21 JDK (LTS)
- βœ… Maven 3.9+ and Gradle 8+
- βœ… Extension Pack for Java
- βœ… Spring Boot Extension Pack
- βœ… GitHub Copilot extensions
- βœ… Minimal overhead for fast startup

**Auto-activates:**
- `.github/instructions/springboot.instructions.md` (automatically loads when editing files in src-springboot/)

**Builds:**
- `src-springboot/` (Spring Boot solution only)

---

## πŸš€ How to Select

### First Time Opening the Repository

1. Open the repository in VS Code
2. VS Code will detect multiple devcontainer configurations
3. You'll see a prompt: **"Select a Dev Container configuration to use"**
4. Choose based on the guidance above

### Switching Between Containers

1. Press `F1` or `Ctrl+Shift+P` (Windows/Linux) / `Cmd+Shift+P` (Mac)
2. Type: **"Dev Containers: Rebuild and Reopen in Container"**
3. Select the new container configuration
4. Wait for container rebuild (1-5 minutes depending on container)

---

## πŸ“‹ Container Comparison

| Feature | Maintainer | .NET Participant | Spring Boot Participant |
|---------|-----------|------------------|------------------------|
| **.NET 9 SDK** | βœ… | βœ… | ❌ |
| **Java 21 JDK** | βœ… | ❌ | βœ… |
| **Maven/Gradle** | βœ… | ❌ | βœ… |
| **Marp CLI** | βœ… | ❌ | ❌ |
| **All Extensions** | βœ… | .NET only | Java only |
| **Build Time** | ~3-5 min | ~1-2 min | ~2-3 min |
| **Container Size** | ~5 GB | ~2 GB | ~3 GB |
| **Copilot Instructions** | Both | .NET | Spring Boot |

---

## πŸ› οΈ Troubleshooting

### "Which Container Should I Use?" Decision Tree

```
Are you creating workshop content or facilitating?
β”œβ”€ YES β†’ Use Maintainer
└─ NO β†’ Are you following .NET or Spring Boot track?
β”œβ”€ .NET β†’ Use .NET Participant
└─ Spring Boot β†’ Use Spring Boot Participant
```

### Container Won't Build

**Error:** "Failed to build devcontainer"

**Solutions:**
1. Ensure Docker Desktop is running
2. Check available disk space (need 5+ GB free)
3. Try rebuilding: `F1` β†’ "Dev Containers: Rebuild Container"
4. Clear Docker cache: `docker system prune -a`

### Copilot Instructions Not Loading

**Instructions now auto-load based on file context:**
- `.github/instructions/dotnet.instructions.md` loads for `**/*.cs` files
- `.github/instructions/springboot.instructions.md` loads for `src-springboot/**` files
- No manual configuration needed - instructions activate automatically when you open files

**If instructions aren't applying:**
- Verify `.github/instructions/` directory exists
- Check file has correct `applyTo:` frontmatter
- Reload VS Code window: `F1` β†’ "Developer: Reload Window"

### Wrong Container Selected

**To switch containers:**
1. `F1` β†’ "Dev Containers: Rebuild and Reopen in Container"
2. Select correct configuration
3. Wait for rebuild

---

## πŸ“š Next Steps

### For .NET Participants
1. Verify build: `dotnet build TaskManager.sln`
2. Run tests: `dotnet test`
3. Start with [Lab 1 (.NET)](../docs/labs/lab-01-tdd-with-copilot/dotnet.md)

### For Spring Boot Participants
1. Verify build: `mvn clean install -f src-springboot/pom.xml`
2. Run tests: `mvn test -f src-springboot/pom.xml`
3. Start with [Lab 1 (Spring Boot)](../docs/labs/lab-01-tdd-with-copilot/springboot.md)

### For Maintainers
1. Verify both builds work
2. Test presentations: `marp --version`
3. Review [Facilitator Guide](../docs/FACILITATOR_GUIDE.md)

---

## πŸ”— Related Documentation

- [Workshop README](../README.md) - Main workshop overview
- [Pre-Workshop Checklist](../docs/PRE_WORKSHOP_CHECKLIST.md) - Setup requirements
- [Pattern Translation Guide](../docs/guides/pattern-translation.md) - .NET ↔ Java mappings
- [Facilitator Guide](../docs/FACILITATOR_GUIDE.md) - Delivery instructions

---

**Questions or issues?** Open an issue in the workshop repository.
44 changes: 0 additions & 44 deletions .devcontainer/devcontainer.json

This file was deleted.

42 changes: 42 additions & 0 deletions .devcontainer/dotnet-participant/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// .NET Participant DevContainer - Streamlined for Workshop Participants
// For participants following the .NET track
{
"name": "AI Workshop - .NET Participant",
"image": "mcr.microsoft.com/devcontainers/dotnet:9.0-bookworm",

"features": {
"ghcr.io/devcontainers/features/github-cli:1": {
"version": "latest"
}
},

// Use 'postCreateCommand' to run commands after the container is created
"postCreateCommand": "dotnet build TaskManager.sln && dotnet dev-certs https --trust",

// Configure tool-specific properties
"customizations": {
"vscode": {
"extensions": [
"GitHub.copilot",
"GitHub.copilot-chat",
"humao.rest-client",
"ms-dotnettools.csdevkit",
"bierner.markdown-mermaid",
"marp-team.marp-vscode",
"yzhang.markdown-all-in-one"
],
"settings": {
"github.copilot.advanced": {}
}
}
},

// Forward ports for .NET apps
"forwardPorts": [5000, 5001],
"portsAttributes": {
"5001": {
"protocol": "https",
"label": ".NET HTTPS"
}
}
}
94 changes: 94 additions & 0 deletions .devcontainer/maintainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
// Workshop Maintainer DevContainer - Full Toolchain
// For workshop authors and maintainers working with BOTH .NET and Spring Boot
{
"name": "AI Workshop - Maintainer (Full Toolchain)",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu-24.04",

"features": {
"ghcr.io/devcontainers/features/dotnet:1": {
"version": "9.0",
"installUsingApt": false
},
"ghcr.io/devcontainers/features/java:1": {
"version": "21",
"jdkDistro": "ms",
"installMaven": "true",
"installGradle": "true",
"mavenVersion": "3.9",
"gradleVersion": "8.5"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "20",
"nodeGypDependencies": true
},
"ghcr.io/devcontainers/features/github-cli:1": {
"version": "latest"
},
"ghcr.io/devcontainers/features/git:1": {
"version": "latest"
}
},

// Use 'postCreateCommand' to run commands after the container is created
"postCreateCommand": "dotnet build TaskManager.sln && mvn clean install -f src-springboot/pom.xml -DskipTests && dotnet dev-certs https --trust && npm install -g @marp-team/marp-cli",

// Configure tool-specific properties
"customizations": {
"vscode": {
"extensions": [
// GitHub Copilot
"GitHub.copilot",
"GitHub.copilot-chat",

// .NET Development
"ms-dotnettools.csdevkit",
"ms-dotnettools.csharp",

// Java Development
"vscjava.vscode-java-pack",
"vscjava.vscode-spring-boot-dashboard",
"vmware.vscode-spring-boot",
"vscjava.vscode-spring-initializr",
"vscjava.vscode-maven",
"vscjava.vscode-gradle",

// API Testing
"humao.rest-client",

// Documentation & Presentations
"bierner.markdown-mermaid",
"marp-team.marp-vscode",
"yzhang.markdown-all-in-one"
],
"settings": {
"github.copilot.advanced": {},
"java.configuration.runtimes": [
{
"name": "JavaSE-21",
"default": true
}
],
"java.jdt.ls.java.home": "/usr/local/sdkman/candidates/java/current"
}
}
},

// Forward ports for both .NET and Spring Boot apps
"forwardPorts": [5000, 5001, 8080, 8443],
"portsAttributes": {
"5001": {
"protocol": "https",
"label": ".NET HTTPS"
},
"5000": {
"label": ".NET HTTP"
},
"8080": {
"label": "Spring Boot HTTP"
},
"8443": {
"protocol": "https",
"label": "Spring Boot HTTPS"
}
}
}
Loading
Loading