Open source data platform built with production-grade tools
Works on your laptop today. Designed to scale to production tomorrow.
Dango deploys a complete data stack (dlt + dbt + DuckDB + Metabase) to your laptop with one command.
Recommended: Python 3.11 or 3.12
Supported versions: Python 3.10, 3.11, 3.12
Check if you have Python:
# Try these commands in order:
python3.12 --version # Check for Python 3.12
python3.11 --version # Check for Python 3.11
python3.10 --version # Check for Python 3.10
# If any show "3.10" or higher, you're good!If you don't have Python 3.10+, install it:
macOS:
- Install Homebrew (if you don't have it):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - Install Python:
brew install python@3.11
- Verify:
python3.11 --version
Linux (Ubuntu/Debian):
sudo apt update
sudo apt install python3.11 python3.11-venv python3-pipLinux (Fedora):
sudo dnf install python3.11Windows:
- Download from python.org
- OR install from Microsoft Store (search "Python 3.11")
- Important: Check "Add Python to PATH" during installation
Required for: Metabase dashboards, Web UI, dbt docs visualization
All platforms: Download Docker Desktop
After installing, start Docker Desktop and verify:
docker --versionInstallation: ~5GB
- Docker Desktop: ~4.5GB
- Python packages (dlt, dbt, DuckDB, etc.): ~400MB
- Dango platform: ~100MB
Data Storage: Varies by data volume
- Small datasets (< 100K rows): < 100MB
- Medium datasets (100K - 1M rows): 100MB - 1GB
- Large datasets (> 1M rows): 1GB+
Recommendation: Have at least 10GB free space before installing.
- macOS (Intel and Apple Silicon)
- Linux (Ubuntu 20.04+, Debian 11+, Fedora 35+)
- Windows 10/11
Before installing, check you have everything:
macOS / Linux:
# Check Python (any of these should work):
python3.12 --version # 3.12.x โ
python3.11 --version # 3.11.x โ
python3.10 --version # 3.10.x โ
# Check Docker (required):
docker --version
# Check disk space:
df -h .Windows:
python --version # Should show 3.10 or higher
docker --versionmacOS / Linux:
curl -sSL https://raw.githubusercontent.com/getdango/dango/main/install.sh | bashWindows (PowerShell):
irm https://raw.githubusercontent.com/getdango/dango/main/install.ps1 | iexThis will:
- Create a project directory
- Set up an isolated virtual environment
- Install Dango from PyPI
- Initialize your project interactively
For security-conscious users (inspect first):
macOS / Linux:
# Download the installer
curl -sSL https://raw.githubusercontent.com/getdango/dango/main/install.sh -o install.sh
# Review what it does
cat install.sh
# Run when ready
bash install.shWindows (PowerShell):
# Download the installer
Invoke-WebRequest -Uri https://raw.githubusercontent.com/getdango/dango/main/install.ps1 -OutFile install.ps1
# Review what it does
Get-Content install.ps1
# Run when ready
.\install.ps1View the installer source: install.sh | install.ps1
If you prefer to set things up yourself:
macOS / Linux:
# Create project directory
mkdir my-analytics
cd my-analytics
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install Dango
pip install getdango
# Initialize project
dango initWindows (PowerShell):
# Create project directory
New-Item -ItemType Directory -Path my-analytics
Set-Location my-analytics
# Create virtual environment
python -m venv venv
.\venv\Scripts\Activate.ps1
# Install Dango
pip install getdango
# Initialize project
dango initmacOS / Linux:
# If you used the bootstrap installer, activate your environment
cd my-analytics
source venv/bin/activate
# Add a data source (CSV or Stripe)
dango source add
# Sync your data
dango sync
# Verify installation
dango --version
# Should show: dango, version X.X.X
# Start the platform (Web UI + Metabase + dbt docs)
dango start
# Open dashboard
open http://localhost:8800Windows (PowerShell):
# If you used the bootstrap installer, activate your environment
cd my-analytics
.\venv\Scripts\Activate.ps1
# Add a data source (CSV or Stripe)
dango source add
# Sync your data
dango sync
# Verify installation
dango --version
# Should show: dango, version X.X.X
# Start the platform (Web UI + Metabase + dbt docs)
dango start
# Open dashboard
Start-Process http://localhost:8800What you get:
- Web UI at
http://localhost:8800- Monitor your data pipeline - dlt for data ingestion (29+ verified sources)
- dbt for SQL transformations and modeling
- DuckDB as your analytics database
- Metabase for dashboards and SQL queries
โ What Works Now:
- โ Full CLI with 10+ commands
- โ CSV data sources (upload and auto-sync)
- โ Stripe integration (tested and working)
- โ Google Sheets with OAuth authentication
- โ Google Analytics (GA4) with OAuth authentication
- โ Facebook Ads with OAuth authentication (60-day token)
- โ dbt auto-generation for staging models
- โ Web UI with live monitoring
- โ Metabase dashboards (auto-configured)
- โ File watcher with auto-triggers
- โ DuckDB as embedded analytics database
- โ Token expiry warnings and validation
- โ
Custom sources via
dlt_nativetype
๐ v0.0.3 added OAuth authentication
- Browser-based OAuth flows for Google and Facebook sources
- Token expiry tracking with warnings before expiration
- Easy re-authentication when tokens expire
- Build custom connectors in
custom_sources/directory
๐ v0.0.5 adds UX improvements
dango sync --dry-runto preview without executing- Unreferenced custom sources warning
- Better validation output (database check, model count)
๐ง Coming in v0.1.0:
- Google Ads
- Additional OAuth sources
- Demo project with sample data
- Full documentation website
๐ฎ Beyond v0.1.0:
- Cloud deployment guides and infrastructure templates
- Advanced scheduling and orchestration
- Team collaboration features
- Enhanced monitoring and alerting
Data Layers:
raw- Immutable source of truth (with metadata)staging- Clean, deduplicated dataintermediate- Reusable business logicmarts- Final business metrics
Tech Stack:
- DuckDB - Analytics database (embedded, fast)
- dbt - SQL transformations
- dlt - API integrations (29 sources: 27 verified + CSV + REST)
- Metabase - BI dashboards
- Docker - Service orchestration
- FastAPI - Web UI backend
- nginx - Reverse proxy with domain routing
- Solo data professionals
- Fractional consultants
- SMEs needing analytics fast
- Anyone who wants a "real" data stack without the complexity
Most tools force you to choose:
- โ Simple setup (limited features) OR Enterprise platforms (expensive, complex)
- โ No-code (inflexible) OR Full-code (steep learning curve)
- โ Fast setup (toy project) OR Production-grade (weeks of work)
Dango gives you both:
- โ Starts on your laptop, designed to scale to your infrastructure
- โ Wizard-driven AND fully customizable
- โ Fast setup AND best practices built-in
"Python version too old"
# Check your version
python3 --version
# Install Python 3.11 (recommended)
# macOS:
brew install python@3.11
# Ubuntu:
sudo apt install python3.11"Docker not found" or "Docker not running"
- Install Docker Desktop: https://docs.docker.com/desktop/
- Make sure Docker is running (check system tray icon)
- You can continue without Docker, but Metabase won't work
"pip install getdango failed"
# Check internet connection
ping pypi.org
# Upgrade pip
pip install --upgrade pip
# Try again
pip install getdango"Permission denied"
- Don't use
sudowith pip in a virtual environment - Check directory permissions:
ls -la
"dango: command not found" (virtual environment)
# Make sure venv is activated
source venv/bin/activate
# Or use full path
./venv/bin/dango --version"dango: command not found" (after global install)
If you just installed Dango globally, your terminal needs to reload:
Option 1: Restart terminal (recommended)
Close and reopen your terminal window, then verify:
dango --versionOption 2: Reload shell config
# For zsh users:
source ~/.zshrc
# For bash on macOS:
source ~/.bash_profile
# For bash on Linux:
source ~/.bashrc
# Then verify:
dango --version"Port 8800 already in use"
# Option 1: Kill the process using the port
lsof -ti:8800 | xargs kill -9
# Option 2: Change the port in .dango/project.yml
# Edit platform.port to a different value"Metabase not starting"
# Check Docker is running
docker ps
# Check container logs
docker ps # Get container ID
docker logs <container-id>
# Restart everything
dango stop
dango start"Sync failed" or "Source connection error"
- Check your API credentials in
.dango/sources.yml - Verify internet connection
- Check source-specific documentation
- GitHub Issues: https://github.com/getdango/dango/issues
- View Documentation: https://github.com/getdango/dango
- Check Changelog: CHANGELOG.md
If you installed with the bootstrap script:
cd your-project
curl -sSL https://raw.githubusercontent.com/getdango/dango/main/install.sh | bash
# Select [u] to upgrade when promptedcd your-project
source venv/bin/activate
# Upgrade to latest version
pip install --upgrade getdango
# Verify new version
dango --version# Validate project still works
dango validate
# Restart the platform
dango stop
dango startCheck CHANGELOG.md for breaking changes between versions.
Virtual Environment (venv):
- You have a
venv/folder in your project directory - Need to activate with
source venv/bin/activate(macOS/Linux) or.\venv\Scripts\Activate.ps1(Windows)
Global Install:
- No
venv/folder in your project dangocommand works from anywhere without activation
macOS / Linux:
# Simply delete the project directory
rm -rf my-analytics/Windows:
# Simply delete the project directory
Remove-Item -Recurse -Force my-analyticsThat's it! Everything (venv, data, config) is contained in the project directory.
Step 1: Find which Python has Dango
macOS / Linux:
# Check each Python version
python3.11 -m pip list | grep getdango
python3.10 -m pip list | grep getdango
python3 -m pip list | grep getdango
# Or find the command location
which dango
# Example output: /Users/you/Library/Python/3.11/bin/dango
# This means use python3.11Windows:
# Check Python versions
python -m pip list | findstr getdango
py -3.11 -m pip list | findstr getdangoStep 2: Uninstall Dango
macOS / Linux:
# Use the Python version that has it (e.g., python3.11)
python3.11 -m pip uninstall getdangoWindows:
python -m pip uninstall getdangoStep 3: Clean up PATH (if you added it)
macOS / Linux:
# Edit your shell config file
# zsh users:
nano ~/.zshrc
# bash users (macOS):
nano ~/.bash_profile
# bash users (Linux):
nano ~/.bashrc
# Remove the line that looks like:
# export PATH="/Users/you/Library/Python/3.11/bin:$PATH"
# Save and reload
source ~/.zshrc # or ~/.bash_profile or ~/.bashrcWindows:
- Search for "Environment Variables" in Windows search
- Click "Edit the system environment variables"
- Click "Environment Variables" button
- Under "User variables", select "Path" and click "Edit"
- Find and remove the entry with
Python\...\Scripts - Click OK to save
- Restart PowerShell
If you're done with Dango entirely, clean up Docker:
macOS / Linux:
# List running containers
docker ps
# Stop Metabase container
docker stop <metabase-container-id>
# Remove Metabase image (saves disk space)
docker rmi metabase/metabaseWindows:
# List running containers
docker ps
# Stop Metabase container
docker stop <metabase-container-id>
# Remove Metabase image (saves disk space)
docker rmi metabase/metabaseWe're in active MVP development! Contributions welcome after v0.1.0 releases.
Apache 2.0 - See LICENSE for details.
- PyPI: https://pypi.org/project/getdango/
- GitHub: https://github.com/getdango/dango
- Issues: https://github.com/getdango/dango/issues
- Changelog: CHANGELOG.md
Built with โค๏ธ for solo data professionals and small teams