This guide provides step-by-step instructions for setting up the development environment for the TSG CrossMsg Signing project, which consists of:
- Core Project:
Iso20022KvpParserwith sophisticated KVP extraction and signature strategies - WebUI Sub-Project:
CrossMsg-Signing-WebUIdemonstration interface
- Windows 11 with latest updates
- Docker Desktop for Windows (with WSL2 backend)
- VS Code or Cursor IDE with Dev Containers extension
- Git for Windows
- PowerShell 7+ (included in Windows 11)
- RAM: Minimum 8GB, recommended 16GB
- Storage: At least 10GB free space
- CPU: Multi-core processor (Intel/AMD)
Use Case: Working on the Iso20022KvpParser, signature strategies, and running unit tests.
-
Open VS Code/Cursor IDE
-
Open Project Folder:
# Navigate to project root cd C:\Projects\TSG-CrossMsg-Signing
-
Open in Dev Container:
- Press
Ctrl+Shift+P - Type:
Dev Containers: Open Folder in Container - Select the project folder
- Wait for container to build (may take 5-10 minutes first time)
- Press
-
Verify Setup:
# Check workspace mounting ls -la /app # Verify Java installation java -version # Verify Gradle installation gradle --version # Check project structure ls -la /app/src
-
Run Core Tests:
# Run all tests gradle test # Run specific KVP parser tests gradle test --tests "*Iso20022KvpParser*Test" # Run signature strategy tests gradle test --tests "*XmlC14n*Test" gradle test --tests "*Jws*Test" gradle test --tests "*Hybrid*Test"
# Build the project
gradle build
# Run tests with verbose output
gradle test --info
# Clean and rebuild
gradle clean build
# Run specific test class
gradle test --tests "com.tsg.crossmsg.signing.test.Iso20022KvpParserXmlToJsonXmlC14nTest"Use Case: Working on both the core parser and the WebUI demonstration interface.
-
Start WebUI Application:
# Navigate to WebUI directory cd C:\Projects\TSG-CrossMsg-Signing\CrossMsg-Signing-WebUI # Start the full application stack docker-compose up -d
-
Verify WebUI Startup:
# Check container status docker-compose ps # View logs docker-compose logs -f
-
Access WebUI:
- Frontend: Open browser to
http://localhost:3000 - Backend API:
http://localhost:8080 - Nginx Proxy:
http://localhost:80(if configured)
- Frontend: Open browser to
-
For Core Development (in separate terminal):
# Navigate to project root cd C:\Projects\TSG-CrossMsg-Signing # Use VS Code Dev Container for core development # (Follow Option 1 steps)
# Start WebUI stack
cd CrossMsg-Signing-WebUI
docker-compose up -d
# View logs
docker-compose logs -f
# Stop WebUI stack
docker-compose down
# Rebuild and restart
docker-compose down
docker-compose up --build -dFile: .devcontainer/devcontainer.json
Features:
- Java 17 (Eclipse Temurin)
- Gradle 7.6.1
- Debugging tools (curl, vim, tree)
- Proper Java path configuration (
/opt/java/openjdk) - Workspace mounted at
/app
File: CrossMsg-Signing-WebUI/docker-compose.yml
Services:
- backend: Spring Boot application using core parser
- frontend: React application for UI
- nginx: Reverse proxy for production deployment
# Run all tests
gradle test
# Run specific test categories
gradle test --tests "*Iso20022KvpParser*Test" # KVP parser tests
gradle test --tests "*XmlC14n*Test" # XML C14N + XMLDSig tests
gradle test --tests "*Jws*Test" # RFC 8785 + JWS tests
gradle test --tests "*Hybrid*Test" # Hybrid/Detached Hash tests
# Run with verbose output
gradle test --info --debug
# Generate test reports
gradle test jacocoTestReport-
Functional Testing:
- Start WebUI:
docker-compose up -d - Open browser:
http://localhost:3000 - Test message editing functionality
- Test signature strategy buttons
- Verify tampering detection
- Start WebUI:
-
API Testing:
- Test backend endpoints:
http://localhost:8080 - Verify parser integration
- Test signature validation
- Test backend endpoints:
Dev Container Not Loading:
# Rebuild container without cache
# In VS Code: Ctrl+Shift+P → "Dev Containers: Rebuild Container Without Cache"Java Path Issues:
# Verify Java installation in container
java -version
echo $JAVA_HOME
which javaTests Failing:
# Check container logs
docker-compose logs dev
# Clean and rebuild
gradle clean buildPort Conflicts:
# Check what's using the ports
netstat -ano | findstr :3000
netstat -ano | findstr :8080
# Stop conflicting services or change ports in docker-compose.ymlContainer Startup Failures:
# Check container logs
docker-compose logs
# Check container status
docker-compose ps
# Rebuild containers
docker-compose down
docker-compose up --build -dParser Integration Issues:
# Verify backend is using core project classes
docker-compose exec backend ls -la /app/src/main/java/com/tsg/crossmsg/signing/- Memory: Allocate at least 8GB RAM
- CPU: Allocate at least 4 cores
- Disk: Enable WSL2 backend for better performance
# Enable Gradle daemon
gradle --daemon
# Use parallel builds
gradle build --parallel
# Increase memory for Gradle
export GRADLE_OPTS="-Xmx2048m -XX:MaxPermSize=512m"- Core Project: Keep parser logic separate from UI concerns
- WebUI: Focus on presentation and user interaction
- Testing: Maintain separation between unit tests and integration tests
# Create feature branch
git checkout -b feature/parser-improvement
# Make changes and test
gradle test
# Commit changes
git add .
git commit -m "Improve KVP parser accuracy"
# Push and create pull request
git push origin feature/parser-improvement- Update README.md for significant changes
- Document new signature strategies
- Update test documentation
- Maintain architecture diagrams
- Start with Core Development: Use Option 1 to work on the
Iso20022KvpParser - Test Signature Strategies: Run comprehensive tests for all three strategies
- Integrate with WebUI: Use Option 2 to test full application functionality
- Contribute Improvements: Follow best practices for code organization and testing
For issues with:
- Core Project: Check container logs and test output
- WebUI: Check Docker Compose logs and browser console
- Environment: Verify Docker Desktop and VS Code Dev Containers setup
- Performance: Optimize Docker Desktop settings and Gradle configuration