Skip to main content
We welcome contributions! Whether you want to fix a bug, add a feature, improve documentation, or help in any other way, your contribution is valuable to the Superset community.

Before You Start

Before contributing, please:
  1. Discuss your change: For significant changes, open an issue or start a discussion first
  2. Review the Code of Conduct: Follow our Code of Conduct in all interactions
  3. Check existing issues: Search for similar issues or PRs to avoid duplicates

Pull Request Process

1. Fork the Repository

Create a fork of the Superset repository:
  1. Go to github.com/superset-sh/superset
  2. Click the “Fork” button in the top-right corner
  3. Select your account as the destination

2. Clone Your Fork

3. Set Up Development Environment

Install dependencies:
Configure environment:
Install project dependencies:

4. Create a Feature Branch

Use a descriptive branch name:
  • feature/add-workspace-templates
  • fix/terminal-paste-issue
  • docs/update-setup-guide

5. Make Your Changes

Write your code following our style guidelines. Run development server:
This starts all dev servers including the desktop app.

6. Test Your Changes

7. Commit Your Changes

Follow the Clean Code principles and the boy scout rule:
“Leave the code cleaner, not messier, than how you found it.”
Write clear, descriptive commit messages:
  • ✅ “Fix terminal paste handling for multi-line content”
  • ✅ “Add workspace template configuration support”
  • ❌ “fix bug”
  • ❌ “updates”

8. Push to Your Fork

9. Open a Pull Request

Create a pull request from your fork:
  1. Go to your fork on GitHub
  2. Click “Contribute” → “Open pull request”
  3. Fill in the PR description with:
    • Clear description of changes
    • Link to related issues (if applicable)
    • Screenshots or videos (for UI changes)
    • Testing steps
  4. Check the box “Allow edits from maintainers” - this speeds up the review process
  5. Request a review from one of the maintainers

10. Code Review

Maintainers will review your PR and may:
  • Request changes
  • Ask questions
  • Suggest improvements
  • Approve and merge
Be responsive to feedback and make requested changes promptly.

Code Style

Superset uses Biome for code formatting and linting.

Formatting & Linting

Biome runs at root level for the entire monorepo:
  • biome check --write --unsafe = format + lint + organize imports + fix all
  • biome check = check only (no changes)
  • biome format = format only

Code Quality Guidelines

  1. Type safety: Avoid any unless absolutely necessary. Use proper TypeScript types
  2. Clean Code: Follow Clean Code principles
  3. Boy Scout Rule: Leave code cleaner than you found it
  4. Prefer gh CLI: Use GitHub CLI over raw git commands where possible
  5. Co-locate dependencies: Keep tests, hooks, utils next to the files using them

Monorepo Structure

Superset is a Bun + Turbo monorepo:

Apps

  • apps/web - Main web application (app.superset.sh)
  • apps/marketing - Marketing site (superset.sh)
  • apps/admin - Admin dashboard
  • apps/api - API backend
  • apps/desktop - Electron desktop application
  • apps/docs - Documentation site
  • apps/mobile - React Native mobile app (Expo)

Packages

  • packages/ui - Shared UI components (shadcn/ui + TailwindCSS v4)
  • packages/db - Drizzle ORM database schema
  • packages/auth - Authentication
  • packages/agent - Agent logic
  • packages/trpc - Shared tRPC definitions
  • packages/shared - Shared utilities
  • packages/mcp - MCP integration
  • packages/desktop-mcp - Desktop MCP server
  • packages/local-db - Local SQLite database
  • packages/durable-session - Durable session management
  • packages/email - Email templates/sending
  • packages/scripts - CLI tooling

Common Commands

Testing Guidelines

  1. Write tests: Add tests for new features and bug fixes
  2. Run tests locally: Ensure all tests pass before submitting PR
  3. Co-locate tests: Place test files next to the code they test

Database Changes

IMPORTANT: Never manually edit files in packages/db/drizzle/. These are auto-generated. To create a database migration:
  1. Modify schema files in packages/db/src/schema/
  2. Generate migration:
  3. Never run migrations yourself - let maintainers handle this

Documentation

Documentation improvements are always welcome!
  • Docs site: Located in apps/docs
  • README: Main README at repository root
  • Code comments: Add JSDoc comments for complex functions
To run the docs site locally:

Community Guidelines

We follow the Contributor Covenant Code of Conduct.

Our Standards

Examples of behavior that contributes to a positive environment:
  • Demonstrating empathy and kindness
  • Being respectful of differing opinions
  • Giving and gracefully accepting constructive feedback
  • Focusing on what’s best for the community
Examples of unacceptable behavior:
  • Sexualized language or imagery
  • Trolling, insulting, or derogatory comments
  • Public or private harassment
  • Publishing others’ private information

Enforcement

Instances of unacceptable behavior may be reported to founders@superset.sh.

Getting Help

If you need help with contributing:

Recognition

All contributors are recognized in our README and release notes. Thank you for making Superset better!

License

By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.