dbx/CONTRIBUTING.md

82 lines
2.2 KiB
Markdown

# 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:
```bash
pnpm install
```
Run the desktop app during development:
```bash
pnpm dev:tauri
```
Run the web backend:
```bash
pnpm dev:backend
```
## Checks
Before opening a pull request, run:
```bash
pnpm check
cargo fmt --check
cargo check --workspace --locked
```
For package changes, also run:
```bash
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, and core capability expectations. Then run:
```bash
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.