A mono-repository for TrueBlocks mini-applications with shared libraries.
trueblocks-minidapps/
├── libs/ # Shared libraries as git submodules
│ ├── trueblocks-sdk/ # Core SDK library (v5)
│ └── trueblocks-dalle/ # DALL-E integration library (v2)
├── explorer/ # TrueBlocks Explorer Wails application
├── namester/ # TrueBlocks Namester Wails application
├── dalleserver/ # DALL-E API Server application
├── bin/ # Built binaries (created by make build)
├── .github/workflows/ # CI/CD workflows
├── go.work # Go workspace configuration
└── Makefile # Build and development commands
- Go 1.25.1 or later
- Git with submodule support
- (Optional) golangci-lint for linting
-
Clone the repository with submodules:
git clone --recursive https://github.com/TrueBlocks/trueblocks-minidapps.git cd trueblocks-minidapps
-
If you already cloned without
--recursive
:git submodule update --init --recursive
-
Verify setup:
make check
# Build all applications
make build
# Run tests across all modules
make test
# Format code
make fmt
# Lint code (requires golangci-lint)
make lint
# Run specific app
make explorer
make namester
make dalleserver
# Clean build artifacts
make clean
# Update git submodules to latest versions
make update-libs
# Update Go dependencies in all modules
cd libs/trueblocks-sdk && go get -u ./...
cd libs/trueblocks-dalle && go get -u ./...
cd explorer && go get -u ./...
cd namester && go get -u ./...
cd dalleserver && go get -u ./...
-
Create a new directory for your app:
mkdir myapp cd myapp
-
Initialize Go module with /v2 versioning:
go mod init github.com/TrueBlocks/myapp/v2 go mod edit -go=1.25.1
-
Add to workspace:
# Edit go.work and add: use ./myapp
-
Create your application and import shared libraries:
import ( "github.com/TrueBlocks/trueblocks-sdk/v5/pkg/base" "github.com/TrueBlocks/trueblocks-dalle/v2/pkg/dalle" )
- Repository: Uses
/v2
for the main repo - Applications: Each app uses
/v2
versioning (github.com/TrueBlocks/appname/v2) - Libraries:
- trueblocks-sdk uses
/v5
- trueblocks-dalle uses
/v2
- trueblocks-sdk uses
The CI pipeline runs on every push and pull request:
- Format Check: Ensures code is properly formatted
- Lint: Runs golangci-lint for code quality
- Test: Executes all tests across the workspace
- Build: Compiles all applications
- Artifacts: Uploads built binaries
- Tag your code with
v*
pattern (e.g.,v2.1.0
) - GitHub Actions automatically creates a release with binaries
- Release notes are auto-generated from commits
- Dependabot automatically creates PRs for:
- Go module updates (weekly)
- GitHub Actions updates (weekly)
- Git submodule updates (weekly)
The repository includes optimized VS Code settings for large workspaces:
- Faster gopls performance
- Reduced memory usage
- Optimized for 600+ dependencies
# Update to latest commits
git submodule update --remote
# Or use the Makefile
make update-libs
# Tag the current commit
git tag v2.1.0
git push origin v2.1.0
# GitHub Actions will automatically create the release
- VS Code settings are pre-configured for performance
- Restart VS Code if gopls becomes unresponsive
- Use
Go: Restart Language Server
command if needed
# Reset submodules to clean state
git submodule deinit --all
git submodule update --init --recursive
# Verify workspace configuration
go work status
# Sync workspace
go work sync
- Create a feature branch
- Make your changes
- Run
make check
to verify everything works - Submit a pull request
The CI pipeline will automatically test your changes across all supported environments.