This guide helps you set up and troubleshoot the Brackeys Web development environment.
./setup.sh# Create .env file with required variables
cp .env.example .env  # If available, or create manually
# Edit .env and set POSTGRES_PASSWORD and other required values
docker compose up -d
cd hasura-ddn
ddn run docker-start
mise run dev
That’s it! The setup script handles tool installation, and Docker Compose handles infrastructure.
The project uses Docker Compose for infrastructure services:
:5432) - Main database for application and Bytebase metadata:8081) - Database schema migration and management tool:9000, :9001) - S3-compatible object storage:3280) - GraphQL API engine (started separately via ddn run docker-start)PostgreSQL automatically initializes with:
brackeys database for your applicationbytebase database for Bytebase metadatainit-scripts/01-bytebase.sqlRequired in your .env file:
# PostgreSQL
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your_secure_password
POSTGRES_DB=brackeys
# Bytebase (optional, defaults to 'bytebase')
BYTEBASE_PASSWORD=bytebase
# Hasura DDN Service Tokens (generate with: openssl rand -base64 32)
APP_POSTGRES_HASURA_SERVICE_TOKEN_SECRET=your_secret_here
APP_STORAGE_HASURA_SERVICE_TOKEN_SECRET=your_secret_here
# Optional: Hasura DDN PAT for telemetry
HASURA_DDN_PAT=your_pat_token
docker-compose.yml) creates the brackeys networkhasura-ddn/compose.yaml) joins the same networkpostgres:5432, minio:9000)Mise is our tool manager that handles:
# Install/update tools
mise install          # Install all tools defined in mise.toml
mise upgrade          # Upgrade mise itself
# Run tasks
mise tasks            # List all available tasks
mise run <task>       # Run a specific task
# Tool management
mise list             # Show installed tools
mise current          # Show currently active tool versions
# Trust project configuration
mise trust            # Trust the mise.toml file in current directory
Solution:
Solution:
# Re-run the installer
curl https://mise.run | sh
# Add to your shell (bash example)
echo 'eval "$(mise activate bash)"' >> ~/.bashrc
source ~/.bashrc
Solution:
# Make scripts executable
chmod +x setup.sh
# For mise installation issues
sudo chown -R $(whoami) ~/.local/share/mise
Solution:
lsof -i :3280 (macOS/Linux)mise run dev-hasuracd hasura && ddn supergraph build localcd hasura && docker logs $(docker ps -q)Solution:
# Install Rust target manually
rustup target add wasm32-unknown-unknown
# Clean and rebuild
cd spacetime-db
cargo clean
cargo build --release --target wasm32-unknown-unknown
Solution:
# Find process using port (example for port 5173)
# macOS/Linux:
lsof -i :5173
kill -9 <PID>
# Windows:
netstat -ano | findstr :5173
taskkill /PID <PID> /F
Xcode Command Line Tools - Required for some dependencies
xcode-select --install
Homebrew - Optional but recommended
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Build essentials - May need to install
# Ubuntu/Debian
sudo apt-get install build-essential
# Fedora
sudo dnf install @development-tools
If the automatic setup fails, follow these steps:
# Universal installer
curl https://mise.run | sh
# Or with package managers
brew install mise          # macOS
yay -S mise-bin           # Arch Linux
cargo install mise        # With Rust
# Bash
echo 'eval "$(mise activate bash)"' >> ~/.bashrc
# Zsh
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
# Fish
echo 'mise activate fish | source' >> ~/.config/fish/config.fish
# PowerShell
Add-Content $PROFILE 'mise activate pwsh | Out-String | Invoke-Expression'
cd /path/to/brackeys-web
mise trust
mise install
# Copy environment template
cp .env.example .env  # If it exists
# Or create manually
cat > .env << 'EOF'
VITE_SUPABASE_URL=your_url_here
VITE_SUPABASE_ANON_KEY=your_key_here
# ... other variables
EOF
bun install
cd spacetime-db && cargo build --release --target wasm32-unknown-unknown
# Start everything
mise run dev
# Or individually
mise run dev-hasura    # Backend only
mise run dev-frontend  # Frontend only
A: No! Mise handles all tool installations automatically.
A: The project is configured for Bun, but you can modify mise.toml and scripts if needed.
A: Update versions in mise.toml, then run mise install.
A: The frontend can run without Docker, but Hasura requires it. Use mise run dev-frontend for frontend-only development.
A: Edit mise.toml and add your task under [tasks.your-task-name].
A: Mise installs tools in ~/.local/share/mise/installs/.
A:
mise implode          # Removes mise and all tools
rm -rf node_modules   # Remove project dependencies
docker compose -f hasura/compose.yaml down -v  # Remove Docker volumes
Edit mise.toml:
[tools]
bun = "1.2.0"    # Specific version
node = "latest"  # Latest version
rust = "~1.75"   # Version range
[env]
_.file = [".env", ".env.local"]  # Load multiple env files
NODE_ENV = { default = "development" }
[tasks.complex-task]
depends = ["setup", "build"]
run = "echo 'Running after dependencies'"
[tasks.watch]
run = "bun run dev"
watch = ["src/**/*.ts", "src/**/*.tsx"]