{"id":42915123,"url":"https://github.com/emirce/bullstudio","last_synced_at":"2026-02-10T12:02:23.809Z","repository":{"id":334784910,"uuid":"1137352459","full_name":"emirce/bullstudio","owner":"emirce","description":"🐂 Modern dashboard for Bull and BullMQ. Built for developers.","archived":false,"fork":false,"pushed_at":"2026-02-09T12:38:37.000Z","size":3945,"stargazers_count":50,"open_issues_count":1,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-09T17:43:29.054Z","etag":null,"topics":["bull","bullmq","docker","redis","web"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emirce.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-19T09:02:13.000Z","updated_at":"2026-02-09T15:44:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/emirce/bullstudio","commit_stats":null,"previous_names":["emirce/bullstudio"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/emirce/bullstudio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emirce%2Fbullstudio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emirce%2Fbullstudio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emirce%2Fbullstudio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emirce%2Fbullstudio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emirce","download_url":"https://codeload.github.com/emirce/bullstudio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emirce%2Fbullstudio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29298525,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T10:40:02.018Z","status":"ssl_error","status_checked_at":"2026-02-10T10:38:28.459Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bull","bullmq","docker","redis","web"],"created_at":"2026-01-30T17:06:03.505Z","updated_at":"2026-02-10T12:02:23.800Z","avatar_url":"https://github.com/emirce.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.svg\" alt=\"bullstudio\" width=\"120\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003ebullstudio\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  A lightweight, beautiful queue management dashboard for \u003ca href=\"https://github.com/OptimalBits/bull\"\u003eBull\u003c/a\u003e and \u003ca href=\"https://docs.bullmq.io/\"\u003eBullMQ\u003c/a\u003e.\u003cbr/\u003e\n  Monitor your queues, inspect jobs, visualize flows, and manage your Redis-backed job infrastructure.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://hub.docker.com/r/emirce/bullstudio\"\u003e\u003cimg src=\"https://img.shields.io/docker/v/emirce/bullstudio?sort=semver\u0026label=Docker%20Hub\" alt=\"Docker Hub\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/emirce/bullstudio\"\u003e\u003cimg src=\"https://img.shields.io/docker/pulls/emirce/bullstudio\" alt=\"Docker Pulls\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/BullMQ-5.x-orange\" alt=\"BullMQ\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Bullx-4.x-orange\" alt=\"Bull\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/React-19-blue\" alt=\"React\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/TypeScript-5.x-blue\" alt=\"TypeScript\" /\u003e\n\u003c/p\u003e\n\n---\n\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"80%\" src=\"https://github.com/user-attachments/assets/b5eea348-5919-40ff-ad55-3a0387dbec47\" /\u003e\n\u003c/div\u003e\n\n\n## Quick Start\n\n```bash\nnpx bullstudio -r \u003credis_url\u003e\n```\n\nThat's it! The dashboard opens automatically at [http://localhost:4000](http://localhost:4000). No code integration needed. Bullstudio automatically detects your provider (Bull or BullMq).\n\n---\n\n## Installation\n\n### Run directly with npx (recommended)\n\n```bash\nnpx bullstudio\n```\n\n### Or install globally\n\n```bash\nnpm install -g bullstudio\nbullstudio\n```\n\n---\n\n## Docker\n\n### Quick Start\n\n```bash\ndocker run -d \\\n  -p 4000:4000 \\\n  -e REDIS_URL=redis://host.docker.internal:6379 \\\n  emirce/bullstudio\n```\n\nThe dashboard is available at [http://localhost:4000](http://localhost:4000).\n\n### Connect to Redis\n\n```bash\n# Local Redis (Docker for Mac/Windows)\ndocker run -d -p 4000:4000 -e REDIS_URL=redis://host.docker.internal:6379 emirce/bullstudio\n\n# Remote Redis\ndocker run -d -p 4000:4000 -e REDIS_URL=redis://myhost.com:6379 emirce/bullstudio\n\n# Redis with authentication\ndocker run -d -p 4000:4000 -e REDIS_URL=redis://:yourpassword@myhost.com:6379 emirce/bullstudio\n```\n\n### Custom Port\n\n```bash\ndocker run -d -p 8080:8080 -e PORT=8080 -e REDIS_URL=redis://host.docker.internal:6379 emirce/bullstudio\n```\n\n### With Authentication\n\n```bash\ndocker run -d \\\n  -p 4000:4000 \\\n  -e REDIS_URL=redis://host.docker.internal:6379 \\\n  -e BULLSTUDIO_PASSWORD=secret123 \\\n  emirce/bullstudio\n```\n\n### Docker Compose\n\n```yaml\nservices:\n  bullstudio:\n    image: emirce/bullstudio\n    ports:\n      - \"4000:4000\"\n    environment:\n      - REDIS_URL=redis://redis:6379\n    depends_on:\n      - redis\n\n  redis:\n    image: redis:7-alpine\n    ports:\n      - \"6379:6379\"\n```\n\n```bash\ndocker compose up -d\n```\n\n### Environment Variables\n\n| Variable              | Description                               | Default                  |\n| --------------------- | ----------------------------------------- | ------------------------ |\n| `REDIS_URL`           | Redis connection URL                      | `redis://localhost:6379` |\n| `PORT`                | Port to run the dashboard on              | `4000`                   |\n| `BULLSTUDIO_USERNAME` | Password for HTTP Basic Auth (production) | `bullstudio`             |\n| `BULLSTUDIO_PASSWORD` | Password for HTTP Basic Auth (production) | (none)                   |\n\n### Available Tags\n\n| Tag | Description |\n|-----|-------------|\n| `latest` | Latest build from the `main` branch |\n| `x.y.z` | Specific release version (e.g., `0.1.4`) |\n| `x.y` | Minor version (e.g., `0.1`) |\n| `x` | Major version (e.g., `0`) |\n\n### Supported Platforms\n\n- `linux/amd64`\n- `linux/arm64`\n\n---\n\n## Usage\n\n```bash\nbullstudio [options]\n```\n\n### Options\n\n| Option              | Short | Description                                    | Default                  |\n| ------------------- | ----- | ---------------------------------------------- | ------------------------ |\n| `--redis \u003curl\u003e`     | `-r`  | Redis connection URL                           | `redis://localhost:6379` |\n| `--port \u003cport\u003e`     | `-p`  | Port to run the dashboard on                   | `4000`                   |\n| `--username \u003cuser\u003e` |       | Username for HTTP Basic Auth (production only) | `bullstudio`             |\n| `--password \u003cpass\u003e` |       | Password for HTTP Basic Auth (production only) | (none)                   |\n| `--no-open`         |       | Don't open browser automatically               | Opens browser            |\n| `--help`            | `-h`  | Show help message                              |                          |\n\n---\n\n## Examples\n\n### Connect to local Redis\n\n```bash\nbullstudio\n```\n\n### Connect to a remote Redis server\n\n```bash\nbullstudio -r redis://myhost.com:6379\n```\n\n### Connect with authentication\n\n```bash\nbullstudio -r redis://:yourpassword@myhost.com:6379\n```\n\n### Use a custom port\n\n```bash\nbullstudio -p 5000\n```\n\n### Connect to Redis with username and password\n\n```bash\nbullstudio -r redis://username:password@myhost.com:6379\n```\n\n### Run without opening browser\n\n```bash\nbullstudio --no-open\n```\n\n### Combine options\n\n```bash\nbullstudio -r redis://:secret@production.redis.io:6379 -p 8080 --no-open\n```\n\n### Protect dashboard with password\n\n```bash\nbullstudio --password secret123\n```\n\nThe browser will prompt for credentials:\n\n- Username: `bullstudio`\n- Password: `secret123`\n\n---\n\n## Authentication\n\nYou can protect the dashboard with HTTP Basic Auth in **production mode only**. Development mode (`--dev`) does not require authentication.\n\n### Usage\n\n```bash\n# Using CLI flag\nbullstudio --password secret123\n\n## Custom username\nbullstudio --username bullstudio_admin --password secret123\n\n# Using environment variable\nBULLSTUDIO_PASSWORD=secret123 bullstudio\n\n# Docker with authentication\ndocker run -e BULLSTUDIO_PASSWORD=secret123 -p 4000:4000 emirce/bullstudio\n```\n\n### Authentication Details\n\n- **Username**: `bullstudio` (fixed, cannot be changed)\n- **Password**: Set via `--password` flag or `BULLSTUDIO_PASSWORD` environment variable\n- **Mode**: Only applies to production mode (default). Development mode (`--dev`) bypasses authentication\n- **Method**: HTTP Basic Auth (browser will show native login dialog)\n\n### Health Check\n\nThe `/health` endpoint is publicly accessible without authentication:\n\n```bash\ncurl http://localhost:4000/health\n# {\"status\":\"ok\",\"timestamp\":\"2026-02-08T21:58:47.508Z\",\"redis\":\"configured\"}\n```\n\n---\n\n## Features\n\n### Overview Dashboard\nGet a bird's-eye view of your queue health with real-time metrics, throughput charts, and failure tracking.\n\n### Jobs Browser\n- Browse all jobs across queues\n- Filter by status (waiting, active, completed, failed, delayed)\n- Search jobs by name, ID, or data\n- Retry failed jobs with one click\n- View detailed job data, return values, and stack traces\n\n### Flows Visualization\n- Visualize parent-child job relationships as interactive graphs\n- See the live state of each job in the flow\n- Click nodes to navigate to job details\n- Auto-refresh while flows are active\n\n---\n\n## Requirements\n\n- **Node.js** 18 or higher\n- **Redis** server running (local or remote)\n- **BullMQ** queues in your Redis instance\n\n---\n\n## Environment Variables\n\nYou can also configure bullstudio using environment variables:\n\n```bash\nexport REDIS_URL=redis://localhost:6379\nexport PORT=4000\nexport BULLSTUDIO_USERNAME=bullstudio\nexport BULLSTUDIO_PASSWORD=secret123\nbullstudio\n```\n\n| Variable              | Description                                    | Default                  |\n| --------------------- | ---------------------------------------------- | ------------------------ |\n| `REDIS_URL`           | Redis connection URL                           | `redis://localhost:6379` |\n| `PORT`                | Port to run the dashboard on                   | `4000`                   |\n| `BULLSTUDIO_USERNAME` | Username for HTTP Basic Auth (production only) | `bullstudio`             |\n| `BULLSTUDIO_PASSWORD` | Password for HTTP Basic Auth (production only) | (none)                   |\n\nCommand-line options take precedence over environment variables.\n\n---\n\n## Troubleshooting\n\n### \"Connection refused\" error\n\nMake sure Redis is running:\n\n```bash\n# Check if Redis is running\nredis-cli ping\n\n# Start Redis (macOS with Homebrew)\nbrew services start redis\n\n# Start Redis (Docker)\ndocker run -d -p 6379:6379 redis\n```\n\n### No queues showing up\n\nbullstudio discovers queues by scanning for BullMQ metadata keys in Redis. Make sure:\n1. Your application has created at least one queue\n2. You're connecting to the correct Redis instance\n3. If using a prefix other than `bull`, your queues use the default prefix\n\n### Port already in use\n\nUse a different port:\n\n```bash\nbullstudio -p 5000\n```\n\n---\n\n## License\n\nMIT\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with love for the BullMQ community\n\u003c/p\u003e\n","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femirce%2Fbullstudio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femirce%2Fbullstudio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femirce%2Fbullstudio/lists"}