The Metabase application has two main components:Documentation Index
Fetch the complete documentation index at: https://mintlify.com/metabase/metabase/llms.txt
Use this file to discover all available pages before exploring further.
- Backend - Written in Clojure with a REST API for database queries
- Frontend - JavaScript single-page application providing the web UI
Quick start
Run the automated setup
The setup script installs mise (a tool version manager) and all required dependencies:This installs Node.js, Java, Clojure, Bun, and Babashka at the correct versions. Follow the prompts, then open a new terminal.
Verify your setup (optional)
If you already have your own setup or want to verify everything is configured correctly:
http://localhost:3000 to see Metabase.
Prerequisites
If you prefer to install dependencies manually:Required tools
Tool versions
- Java - JDK 21 (required)
- Node.js - Latest LTS release
- Clojure - Latest stable version
- Bun - 1.0.0 or higher
If you have multiple JDK versions installed, make sure Java 21 is active:
Special requirements
Apple M1/M2 computers
Install Rosetta 2 before building the frontend:VS Code / IDE setup
If your IDE runs commands outside your interactive shell, configure mise shims:IDE configuration for mise
IDE configuration for mise
Add to your shell profile (VS Code settings.json:Emacs init.el:
.zshrc, .bashrc, etc.):Frontend development
The frontend uses Bun for package management and rspack for bundling.Install dependencies
Build commands
Frontend testing
Debugging tips
Better source maps
For improved debugging with breakpoints in JSX:Enable ESLint in dev mode
By default, ESLint is disabled during development for faster builds:Backend development
The backend is written in Clojure and runs on the JVM.Start the backend server
http://localhost:3000. Wait for the message “Metabase initialization complete.”
Using the REPL
The Clojure REPL is the primary development tool for backend work:Application database
By default, Metabase uses H2. For development, we recommend PostgreSQL.Configure PostgreSQL for development
Configure PostgreSQL for development
Create Or use a connection string:Or create a
~/.clojure/deps.edn:.lein-env file in the project directory:Building drivers
Database drivers live in themodules/drivers/ directory and must be built separately:
plugins/ directory.
Running backend tests
Testing with specific drivers
By default, tests run against H2. To test other drivers:Running linters
Running multiple instances
To run multiple Metabase instances on the same machine:Frontend
Backend
Continuous integration
Run all linters and tests:Configuration files
To skip the setup wizard and pre-configure your instance, add a Metabase config file to the directory where you run Metabase.Troubleshooting
File watching issues
If your system has trouble detecting file changes, enable filesystem polling inrspack.main.config.js:
Port conflicts
If port 3000 is already in use, set a different port:Next steps
- Learn about the code structure
- Read the testing guide
- Understand how to build drivers