A 3D UML diagram generator that transforms Mermaid-like DSL into glTF 2.0 format.
Experience the extuml 3D viewer online: https://ryo-arima.github.io/extuml/
The live demo showcases:
- 🎮 Interactive 3D UML diagrams with mouse controls
- 📊 Real-time model metadata display
- 📄 Complete glTF JSON structure preview
- 🔄 Built with Three.js for smooth 3D rendering
# Show all available commands
make help
# Build the binary
make build
# Generate glTF from sample
make generate
# Start development server for viewer
make serve
# Then open http://localhost:8000 in your browser
# Development workflow (generate + serve)
make devgo build -o .bin/extuml ./cmd.bin/extuml generate --extuml etc/sample.extuml --output etc/output.gl
# or with short flags
.bin/extuml generate -e etc/sample.extuml -o etc/output.glThe viewer automatically loads and displays etc/output.gl:
# Start the development server
make serve
# or manually
cd .dist
python3 -m http.server 8000
# Then open http://localhost:8000 in your browserThe local viewer features:
- 🔄 Auto-reload: Refreshes every 2 seconds during development
- 📁 Automatic loading: Always displays
etc/output.gl - 🎮 Interactive controls: Rotate, zoom, and pan with mouse
- 📊 Metadata display: Shows model info and glTF structure
- 📄 JSON preview: View complete glTF asset data
- ⚡ Built with Three.js: High-performance WebGL rendering
Visit the live demo to see extuml in action without any setup!
extuml/
├── .bin/ # Built binaries
├── dist/ # Web viewer for glTF files (GitHub Pages)
│ └── index.html # Three.js based 3D viewer
├── etc/ # Sample files
│ ├── sample.extuml # Sample extuml DSL
│ └── output.gl # Generated glTF output
├── cmd/ # CLI entry point
│ └── main.go
├── pkg/ # Application packages
│ ├── command/ # CLI commands (cobra-based)
│ ├── config/ # Dependency injection
│ ├── controller/ # Command handlers
│ ├── model/ # Data structures (extuml/, gltf/)
│ ├── repository/ # File I/O
│ └── usecase/ # Business logic
├── test/ # Integration tests
├── .github/workflows/ # GitHub Actions
│ └── static.yml # Deploy to GitHub Pages
├── go.mod
└── README.md
Following clean architecture pattern:
- Command Layer: CLI command definitions
- Controller Layer: Request validation and coordination
- UseCase Layer: Core business logic
- Repository Layer: Data access (file I/O)
- Model Layer: Data structures
- Config Layer: Dependency injection
go run ./cmd generate --extuml etc/sample.extuml --output output.glgo test ./...The 3D viewer is automatically deployed to GitHub Pages on every push to the main branch:
- Build Process: GitHub Actions builds the Go binary and generates sample output
- Asset Preparation: Generated glTF files and viewer assets are copied to
dist/ - Deployment: The
dist/directory contents are published to GitHub Pages - Live URL: Available at https://ryo-arima.github.io/extuml/
To trigger a manual deployment, go to the Actions tab and run the "Deploy extuml 3D Viewer to Pages" workflow.
MIT