Repository layout
Use the source module that owns a behavior and its nearest test before broadening a change. This map is current for c8ed147.
| Area | Owns | Closest verification |
|---|---|---|
src/ | Rust CLI, Pingora proxy, runtime snapshots, control plane, security, clustering, plugins, and observability. | Matching tests/*.rs; for example routing.rs, reload.rs, proxy_*.rs, and control_plane_*.rs. |
crates/bearust-plugin-sdk/ | Guest-side ABI types, allocation helpers, and hook contracts for Rust-to-WASM plugins. | tests/plugin_runtime.rs and plugin fixture tests. |
frontend/ | Vite dashboard, generated TanStack routes, typed API client, i18n, component tests, and Playwright E2E tests. | npm test --prefix frontend -- --run, then npm run test:e2e --prefix frontend. |
migrations/ | Ordered SQLx migrations for SQLite, PostgreSQL, and MySQL control-plane data. | tests/control_plane_repository.rs, affected repository/API tests, and opt-in tests/external_database.rs. |
tests/ | Integration and behavior tests, including fixture-driven proxy, cluster, TLS, WAF, and plugin coverage. | Run the focused test target first, then cargo test --workspace --locked. |
config/ | Example server, pools, routes, optional subsystem configuration. | tests/config_validation.rs and bearust validate --config <file>. |
Dockerfile, Dockerfile.dev | Production multi-stage image and cargo-watch development image. | CI container build/run steps. |
docker-compose.yml, docker-compose.dev.yml | Production and hot-reload service topology, ports, profiles, volumes, and environment. | docker compose config, dev config, and scripts/*smoke*.sh. |
.github/workflows/ci.yml | Required Rust, frontend, Playwright, and container gates. | Reproduce the listed CI command for the touched area. |
scripts/ | Development Compose and production smoke scripts. | Run scripts/dev-compose-smoke.sh or scripts/smoke-test.sh when changing their path. |
Top-level Cargo.toml defines the Rust workspace and includes the plugin SDK member; frontend/package.json owns frontend scripts and dependencies. Avoid changing generated frontend/src/routeTree.gen.ts by hand—its Vite plugin generates it from frontend/src/routes/.