QueryBox is a database management tool for executing and managing queries across multiple database systems through a plugin-based architecture.
| Tool | Version | Purpose |
|---|---|---|
| Go | 1.24+ | Backend |
| Wails v3 | v3 alpha | Desktop framework |
| Task | latest | Build automation |
| Node.js | 18+ | Frontend tooling |
| protoc + protoc-gen-go + protoc-gen-go-grpc | libprotoc 29.6 / protoc-gen-go v1.36.10 / protoc-gen-go-grpc v1.6.1 | gRPC code generation (only if modifying .proto files) |
# Install Task (build tool)
go install github.com/go-task/task/v3/cmd/task@latest
# or using npm
npm install -g taskfile
# Install Wails CLI
go install github.com/wailsapp/wails/v3/cmd/wails@latest
# Install protoc-gen-go (only needed if modifying .proto files)
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.10
# Install protoc-gen-go-grpc (only needed if modifying .proto files)
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.6.1
# Install protoc (see https://grpc.io/docs/protoc-installation/)=git clone https://github.com/your-username/querybox.git
cd querybox# Start the app with hot-reload
wails3 devBoth frontend and backend changes are hot-reloaded automatically.
wails3 buildThe production executable is placed in bin/.
Plugins are standalone executables that live in bin/plugins/ (on Windows the files will have .exe suffix).
The app discovers them automatically at runtime.
# Build all plugins at once
task build:pluginsBy default the host OS is detected; you can override using standard Go cross‑compile vars:
GOOS=windows GOARCH=amd64 task build:pluginsBinaries are placed in bin/plugins/ (Windows builds get .exe) and picked up by the app within 2 seconds.
-
Copy the template:
cp -r plugins/template plugins/<your-plugin-name>
-
Edit
plugins/<your-plugin-name>/main.go— implement the four commands:info— return plugin metadata (name, version, type)authforms— return auth form definitions for the UIexec— execute a query and return resultsconnection-tree— return a browsable object hierarchy
-
Build and drop the binary:
task build:plugins
-
The running app will discover the new plugin automatically (no restart needed).
See docs/features/02-plugin-system.md for the full plugin contract and examples.
├── main.go # Application entry point
├── services/ # Core services (connection, credential, plugin manager)
├── pkg/plugin/ # Plugin SDK — ServeCLI helper and type aliases
├── plugins/ # Plugin source code
│ ├── mysql/
│ ├── postgresql/
│ ├── sqlite/
│ └── template/ # Starting point for new plugins
├── contracts/plugin/v1/ # Protobuf definitions
├── rpc/contracts/plugin/v1/ # Generated Go code (pluginpb)
├── frontend/ # Vue 3 frontend
├── docs/ # Design and architecture documentation
├── scripts/ # Build helper scripts
└── build/ # Platform-specific build configuration
See docs/README.md for the full reading order. Quick links:
| Component | License | Notes |
|---|---|---|
| JetBrains Mono | Apache 2.0 | Font used in the UI |
This project is licensed under the MIT License. See the LICENSE file for details.
