dbx/CONTRIBUTING.md

3.0 KiB

Contributing to DBX

Thanks for helping improve DBX. This repository contains the desktop app, Rust backend, Docker service, documentation site, CLI, MCP server, and optional plugins.

Project Layout

  • apps/desktop/ - Vue desktop frontend.
  • crates/dbx-core/ - shared Rust database core.
  • crates/dbx-web/ - Docker/web backend service.
  • src-tauri/ - Tauri desktop shell and native commands.
  • packages/ - Node packages, including CLI, MCP server, shared Node core, and app tests.
  • plugins/ - optional DBX plugins.
  • docs/ - documentation site and docs assets.
  • deploy/ - Docker and deployment assets.

Development Setup

Required tools:

  • Node.js >=22.13.0
  • pnpm 10.27.0
  • Rust stable
  • Java 17, when working on JDBC plugin packaging

Install dependencies:

pnpm install

Run the desktop app during development:

pnpm dev:tauri

Run the web backend:

pnpm dev:backend

Checks

Before opening a pull request, run:

pnpm check
cargo fmt --check
cargo check --workspace --locked

For package changes, also run:

pnpm test:packages
pnpm publish:dry-run

For Docker or deployment changes, run the relevant Docker Compose or Docker build checks from deploy/.

Database Driver Metadata

When adding or changing a database type, update crates/dbx-core/assets/database-drivers.manifest.json first. The manifest is the shared source for driver mode, MCP/CLI routing, agent keys, support level, and top-level product capabilities.

Choose the support level conservatively:

  • connect — connection and SQL/command execution only.
  • browse — connection plus metadata browsing.
  • understand — browsing plus higher-level understanding features such as search, object sources, or diagrams.
  • operate — advanced operation surfaces such as table data editing, structure editing, import, transfer, database creation, explain plans, or user administration.

Set capabilities explicitly for the product surfaces DBX should expose. Keep detailed feature behavior in the owning feature module, such as table structure sub-capabilities or user administration dialects. Custom JDBC support should remain conservative unless dialect inference or a dedicated profile proves the advanced capability works.

Then run:

cargo test -p dbx-core --test database_capabilities
pnpm --filter @dbx-app/node-core exec tsx --test tests/driver-manifest.test.ts
pnpm --filter @dbx-app/mcp-server exec tsx --test tests/driver-manifest.test.ts

Pull Requests

  • Keep changes focused and reviewable.
  • Include tests for behavior changes when practical.
  • Update documentation when user-facing behavior changes.
  • Use clear commit messages following Conventional Commits, such as fix(app): clamp window size.

Reporting Issues

Use GitHub Issues for reproducible bugs, feature requests, database compatibility reports, and questions. Include the DBX version, operating system, database type, and relevant logs or screenshots when possible.