Thank you for your interest in contributing! This document explains how to get involved, report issues, and submit changes.
- Code of Conduct
- Reporting Bugs
- Requesting Features
- Development Setup
- Submitting a Pull Request
- Coding Guidelines
- Commit Messages
By participating in this project you agree to be respectful and constructive in all interactions. We will not tolerate harassment, discrimination, or personal attacks of any kind.
Before filing a bug report, please:
- Search existing issues to avoid duplicates.
- Reproduce the issue on the latest release.
- Check the SECURITY.md — if the bug is a security vulnerability, do not open a public issue.
When ready, open a new issue using the Bug Report template and fill in all requested fields.
Feature requests are welcome. Before submitting:
- Search existing issues to see if it has already been proposed.
- Consider whether the feature fits the scope of a desktop database management tool.
Open a new issue using the Feature Request template and describe the problem you are trying to solve, not just the solution.
See the README for full install instructions. Quick summary:
# 1. Install Node.js (LTS) and enable pnpm
corepack enable && corepack prepare pnpm@latest --activate
# 2. Install Rust stable
rustup default stable
# 3. Install Tauri system prerequisites
# https://v2.tauri.app/start/prerequisites/
# 4. Clone the repo and install dependencies
git clone https://github.com/<owner>/workgrid-studio.git
cd workgrid-studio
pnpm install
# 5. Start the full desktop app in development mode
pnpm tauri dev-
Fork the repository and create a branch from
main:git checkout -b feat/your-feature-name
-
Make your changes. Keep commits focused — one logical change per commit.
-
Validate before pushing:
pnpm lint pnpm build
This runs ESLint,
tsc, the Vite build, and version consistency checks. Fix all errors before opening a PR. -
Pre-commit hooks run automatically after
pnpm install. Husky runspnpm lintandpnpm buildbefore each commit so broken changes are caught locally. -
Push your branch and open a pull request against
main. -
Fill in the pull request description, including:
- What the change does and why.
- Any related issue numbers (
Closes #123). - Screenshots or screen recordings for UI changes.
-
A maintainer will review your PR. Please be responsive to feedback. PRs with no activity for 30 days may be closed.
- ESLint passes (
pnpm lint) - TypeScript strict mode passes (
pnpm build) - No
// @ts-ignoreor// @ts-expect-erroradded without justification - UI changes tested in both light and dark themes
- Version files not manually edited (
package.jsonis the single source of truth) - No secrets, credentials, or personal data included
- Follow the conventions described in CLAUDE.md.
- Use functional components and hooks — no class components.
- Use the
cn()helper for conditional Tailwind classes. - Use
crypto.randomUUID()for ID generation. - Keep components focused; avoid mixing unrelated concerns in a single file.
- Keep lint clean and prefer fixing warnings at the source instead of suppressing them.
Use the Conventional Commits format:
<type>(<scope>): <short summary>Common types: feat, fix, refactor, style, docs, chore, ci.
Examples:
feat(query-tab): add explain plan view
fix(session): handle reconnect on connection drop
docs: update contributing guideKeep the summary under 72 characters and written in the imperative mood ("add", not "added" or "adds").