Dependencies for Building Apache Superset: Complete System and Package Requirements
Building Apache Superset from the superset-sh/superset repository requires Bun v1.0+, macOS, Git ≥2.20, GitHub CLI, Caddy, and specific npm packages managed through a TurboRepo monorepo structure.
The superset-sh/superset project is a Bun-powered monorepo that packages Apache Superset as both a web and desktop application. Understanding the complete dependency chain—from system-level tools to workspace-specific runtime libraries—is essential for successfully compiling the project from source.
System-Level Requirements for Building Apache Superset
Before installing package dependencies, your development environment must provide several core system tools. These are documented in the repository's README.md under the "Requirements" section.
Operating System and Runtime
The build process is optimized for macOS. While the codebase may compile on other platforms, Windows and Linux environments remain untested and unsupported according to the project documentation.
Bun v1.0 or higher serves as the mandatory JavaScript runtime and package manager. Unlike Node.js-based projects, superset-sh/superset relies on Bun's specific APIs and performance characteristics for both development and production builds.
Required System Tools
| Tool | Minimum Version | Purpose |
|---|---|---|
| Git | ≥ 2.20 | Version control and submodule management |
GitHub CLI (gh) |
Latest | Required for development scripts and automation workflows |
| Caddy | Latest | Reverse-proxy server for Electric SQL streams in development mode |
Core Build Tooling and Development Dependencies
The root package.json defines monorepo-wide development dependencies that orchestrate the build process across all workspaces.
{
"devDependencies": {
"@biomejs/biome": "2.4.2",
"dotenv-cli": "^11.0.0",
"sherif": "^1.10.0",
"turbo": "^2.8.7"
}
}
@biomejs/biome provides unified linting and formatting across the codebase, replacing separate ESLint and Prettier configurations. turbo acts as the monorepo build orchestrator, enabling cached builds and parallel execution across the apps/* and packages/* workspaces. sherif manages workspace-wide script consistency, while dotenv-cli loads environment variables from .env files during script execution.
Workspace-Specific Runtime Dependencies
Each workspace within the monorepo declares its own runtime dependencies. The project structure separates applications (apps/) from shared libraries (packages/).
Web Application Dependencies
The apps/web workspace contains the Next.js frontend and requires a comprehensive React ecosystem:
- Framework:
next,react,react-dom - Data Fetching:
@tanstack/react-query,@trpc/client,@trpc/server,@trpc/react-query - UI Components:
framer-motion,lucide-react,@superset/ui(workspace dependency) - State Management: Zustand or similar (implied by package structure)
See apps/web/package.json for the complete dependency tree.
Desktop Application Dependencies
The apps/desktop workspace builds an Electron wrapper around the web application. Key dependencies include:
- Electron: Core runtime for desktop packaging
- Native Modules:
node-ptyfor terminal emulation within the desktop environment - Builder:
electron-builderfor creating distributable installers
The apps/desktop/BUILDING.md file contains specific instructions for handling native module compilation.
Shared Package Dependencies
The packages/ directory contains modular libraries consumed by both web and desktop applications:
packages/ui: React components built ontailwindcss,class-variance-authority, andshadcn/uiprimitivespackages/db: Database layer usingdrizzle-orm,@neondatabase/serverless, andpostgresdriverspackages/auth: Authentication utilities and providerspackages/trpc: tRPC router and procedure definitions shared between client and serverpackages/shared: Common utilities, types, and constants
Step-by-Step Build Process Using Apache Superset Dependencies
To build the project from source, execute these commands in sequence:
# 1. Clone the repository
git clone https://github.com/superset-sh/superset.git
cd superset
# 2. Configure environment variables
cp .env.example .env
echo 'SKIP_ENV_VALIDATION=1' >> .env # Optional: bypasses strict env validation
# 3. Install all dependencies using Bun
# This installs root devDependencies (@biomejs/biome, turbo, etc.)
# and all workspace dependencies (Next.js, Electron, Drizzle ORM, etc.)
bun install
# 4. Start the development servers
# TurboRepo orchestrates parallel startup of web, desktop, and database services
bun run dev
# 5. Build the desktop application for distribution
# Uses Turbo's filtered build to target only the desktop workspace
bun run build # Equivalent to: turbo build --filter=@superset/desktop
Summary
Building Apache Superset from the superset-sh/superset repository requires a specific toolchain centered on Bun rather than Node.js. Key takeaways include:
- System prerequisites: macOS, Bun v1.0+, Git ≥2.20, GitHub CLI, and Caddy are mandatory for the build process.
- Monorepo architecture: The project uses TurboRepo to manage dependencies across
apps/web,apps/desktop, and multiplepackages/*workspaces. - Core tooling: Root-level devDependencies include
@biomejs/biomefor linting,turbofor build orchestration, andsheriffor script management. - Runtime stack: Web dependencies center on Next.js and React, while the desktop build requires Electron and native modules like
node-pty.
Frequently Asked Questions
What is the minimum Bun version required to build Apache Superset?
The superset-sh/superset repository requires Bun v1.0 or higher. This runtime is mandatory because the build scripts and package management rely on Bun-specific APIs and performance characteristics that differ from Node.js.
Can I build Apache Superset on Windows or Linux?
Currently, macOS is the only supported operating system for building from source. While the codebase may theoretically compile on Windows or Linux, these platforms remain untested and unsupported according to the repository's README documentation.
What is the purpose of Caddy in the build process?
Caddy serves as a reverse-proxy server specifically for Electric SQL streams during development mode. It is not required for production builds but is necessary for local development to handle real-time database synchronization features used by the application.
How do workspace dependencies differ from root dependencies in the monorepo?
Root dependencies (defined in the repository's package.json) are primarily development tools like turbo, @biomejs/biome, and sherif that manage the entire monorepo. Workspace dependencies (defined in individual apps/*/package.json and packages/*/package.json files) are runtime libraries specific to each application or shared package, such as next for the web app or electron for the desktop app.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →