| name | dev-workflow |
| description | SignalDB development workflow - build, test, lint, format, run services, Docker, Grafana plugin, health checks, and semantic commits. Use when building, testing, running, or deploying SignalDB. |
| sources | ["CLAUDE.md","scripts/run-dev.sh","compose.yml"] |
SignalDB Development Workflow
Build
cargo build
cargo build --release
cargo build -p <package>
Test
cargo test
cargo test -p <package>
cargo test <test_name>
cargo test -- --nocapture
RUST_LOG=debug cargo test <name> -- --nocapture
cargo test -p tests-integration
cargo test -p tests-integration compactor
cargo test -p compactor
Pre-Commit Checks (MANDATORY before committing)
These run automatically via cargo-husky hooks, but run manually to catch issues early:
cargo fmt
cargo clippy --workspace --all-targets --all-features
cargo machete --with-metadata
cargo deny check
Running Services
Monolithic Mode
cargo run --bin signaldb
./scripts/run-dev.sh
./scripts/run-dev.sh --sqlite
./scripts/run-dev.sh --with-deps --postgres
Microservices Mode
cargo run --bin signaldb-acceptor
cargo run --bin signaldb-router
cargo run --bin signaldb-writer
cargo run --bin signaldb-querier
cargo run --bin signaldb-compactor
./scripts/run-dev.sh services
Storage Locations
- WAL:
.data/wal/
- Parquet data:
.data/storage/
- SQLite databases:
.data/*.db
Docker
Compose file: compose.yml. The stack runs PostgreSQL, Grafana, Pyroscope,
MinIO, and the SignalDB services (writer, acceptor, querier, router, compactor).
docker compose up
docker compose up --build
docker compose build
MinIO: Console localhost:9001, API localhost:9000 (minioadmin/minioadmin)
Grafana Plugin
npm install
npm run grafana:dev
npm run grafana:build
cd src/grafana-plugin && npm run build:backend
Health Checks
curl http://localhost:4318/health
curl http://localhost:3000/health
Semantic Commits
Use semantic commit messages:
feat: new feature
fix: bug fix
refactor: code restructuring
docs: documentation
test: test changes
chore: build/tooling changes
Configuration
Precedence: defaults -> signaldb.toml -> env vars (SIGNALDB_*)
cp signaldb.dist.toml signaldb.toml
Key env vars for S3/MinIO:
AWS_ENDPOINT_URL=http://localhost:9000
AWS_ACCESS_KEY_ID=minioadmin
AWS_SECRET_ACCESS_KEY=minioadmin
AWS_REGION=us-east-1