{"id":46435286,"url":"https://github.com/vannadii/revaer","last_synced_at":"2026-05-23T23:01:16.594Z","repository":{"id":320911750,"uuid":"1083742743","full_name":"VannaDii/revaer","owner":"VannaDii","description":"Revaer is a data-driven media orchestration platform that centralizes configuration, telemetry, and operational control in PostgreSQL. The repository is organized as a Rust workspace composed of focused crates that together deliver the initial torrent + filesystem management minimal lovable product.","archived":false,"fork":false,"pushed_at":"2026-05-23T22:19:34.000Z","size":20487,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-23T22:22:23.420Z","etag":null,"topics":["arrs","arrstack","media","rust"],"latest_commit_sha":null,"homepage":"https://revaer.com","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VannaDii.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-10-26T16:24:37.000Z","updated_at":"2026-05-23T22:19:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"e193a638-09ff-47da-ab81-d8ace9ebfc3b","html_url":"https://github.com/VannaDii/revaer","commit_stats":null,"previous_names":["vannadii/revaer"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/VannaDii/revaer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VannaDii%2Frevaer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VannaDii%2Frevaer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VannaDii%2Frevaer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VannaDii%2Frevaer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VannaDii","download_url":"https://codeload.github.com/VannaDii/revaer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VannaDii%2Frevaer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33415020,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: 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":["arrs","arrstack","media","rust"],"created_at":"2026-03-05T20:45:20.402Z","updated_at":"2026-05-23T23:01:16.581Z","avatar_url":"https://github.com/VannaDii.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Revaer\n\nRevaer is a data-driven media orchestration platform that centralizes configuration, telemetry, and operational control in PostgreSQL. The repository is organized as a Rust workspace composed of focused crates that together deliver the initial torrent + filesystem management minimal lovable product.\n\n## Guiding Principles\n\n-   **Single source of truth** – `DATABASE_URL` is the only required environment variable; all runtime configuration is stored in the database and hot-reloads across services.\n-   **Composable crates** – Each domain area (configuration, API, engine, filesystem, telemetry) lives in its own crate with well-defined traits and DTOs.\n-   **Observability first** – Telemetry, health, and structured events are wired in from the outset.\n-   **Safe defaults** – Setup mode boots in a locked-down state until the operator unlocks the system through the API or CLI using a one-time token.\n\n## Workspace Layout\n\n```\nrevaer/\n├─ Cargo.toml\n├─ justfile\n├─ README.md\n├─ docs/\n│  ├─ adr/\n│  └─ api/\n├─ config/\n│  └─ reference-config.md        # Documentation only; no runtime reads\n└─ crates/\n   ├─ revaer-app                 # Composition root binary crate\n   ├─ revaer-api                 # Axum HTTP + SSE services\n   ├─ revaer-cli                 # Terminal client\n   ├─ revaer-config              # DB-backed settings service\n   ├─ revaer-fsops               # Filesystem post-processing\n   ├─ revaer-telemetry           # Tracing, metrics, health hooks\n   ├─ revaer-torrent-core        # Engine-agnostic traits \u0026 DTOs\n   └─ revaer-torrent-libt        # libtorrent adapter\n```\n\n## Getting Started\n\n1. Install the Rust toolchain (`rustup show`) at MSRV `1.91.0` (pinned in `rust-toolchain.toml`) and ensure `cargo`, `rustfmt`, and `clippy` are available.\n2. Provide a PostgreSQL connection string via the `DATABASE_URL` environment variable.\n3. Run `just check` to verify the workspace (all workflows must go through `just`; avoid calling `cargo …` directly).\n\n## Development Tasks\n\n-   `just fmt` – format sources.\n-   `just lint` – run clippy with warnings as errors.\n-   `just test` – execute the full test suite (integration + unit).\n-   `just build` – build the workspace with all features enabled.\n-   `just udeps` – detect unused dependencies (installs `cargo-udeps` on first run).\n-   `just audit` – scan dependencies for published advisories (`cargo-audit`).\n-   `just deny` – enforce the license and advisory policy (`cargo-deny`).\n-   `just cov` – run source-based coverage with LLVM (requires `llvm-tools-preview`).\n-   `just sonar-compile-db` – build the native libtorrent shim and emit `coverage/compile_commands.json` for local SonarQube C-family analysis.\n-   `just ci` – execute all required quality gates locally.\n-   `just ui-e2e` – run Playwright API + UI E2E tests with temp databases and managed servers.\n\n## UI E2E Testing\n\nThe Playwright suite lives under `tests/` and reads configuration from `tests/.env`. API checks (both auth modes) run before UI specs to catch backend failures first. Each run provisions a temp database.\n\n1. Ensure ports `7070` and `8080` are free (the runner stops existing Revaer dev servers, but other services must be stopped manually).\n2. Update `tests/.env` as needed (notably `E2E_DB_ADMIN_URL`, `E2E_BASE_URL`, `E2E_API_BASE_URL`, `E2E_FS_ROOT`).\n3. Run `just ui-e2e`.\n\n## Native Libtorrent Integration Test\n\nThe native libtorrent integration test suite is opt-in to keep default runs deterministic.\n\n-   Enable it with `REVAER_NATIVE_IT=1`; it skips otherwise.\n-   Ensure Docker is reachable (set `DOCKER_HOST` if not on `/var/run/docker.sock`).\n-   Run `REVAER_NATIVE_IT=1 just ci` or `just test-native` when the native path should be covered (e.g., feature matrices).\n-   See `docs/platform/native-tests.md` for the full setup and CI matrix note.\n\n## CLI Tips\n\n-   `revaer --output json ls` emits JSON suitable for scripting workflows (table output remains the default).\n-   `revaer config get` and `revaer config set --file changes.json` provide a CLI wrapper around the `/v1/config` API so you can script updates without crafting HTTP requests manually.\n\n## Optional OpenTelemetry Export\n\nSet `REVAER_ENABLE_OTEL=true` to attach the OTLP tracing exporter. The exporter is disabled by default; when the flag is present the app uses `REVAER_OTEL_SERVICE_NAME` (defaults to `revaer-app`) and sends traces to `REVAER_OTEL_EXPORTER` or the standard `OTEL_EXPORTER_OTLP_ENDPOINT` when provided. This keeps the instrumentation tree dormant unless you explicitly request it in environments that provide an OTLP collector.\n\n### Required Tooling\n\nInstall the following Cargo subcommands before running the quality gates locally (the `just` recipes will also install them on first use):\n\n```bash\ncargo install cargo-udeps --locked\ncargo install cargo-audit --locked\ncargo install cargo-deny --locked\ncargo install cargo-llvm-cov --locked\nrustup component add llvm-tools-preview\n```\n\n## Documentation\n\nThe documentation site is powered by [mdBook](https://rust-lang.github.io/mdBook/) and mirrors the automated docs pipeline for this repository.\n\n1. Install the tooling once with `just docs-install` (installs `mdbook` and `mdbook-mermaid`).\n2. Build and index the docs with `just docs` (runs `docs-build` followed by `docs-index`).\n3. Preview locally via `just docs-serve`.\n\nPushes to `main` invoke the docs workflow to rebuild the book, refresh the LLM manifests under `docs/llm/`, and publish the static site to GitHub Pages.\n\n## Next Steps\n\n-   Implement the migrations and configuration schema inside `revaer-config`.\n-   Wire the setup flow and runtime hot-reload between `revaer-app`, `revaer-api`, `revaer-torrent-*`, and `revaer-fsops`.\n-   Author ADRs capturing architectural decisions, bootstrap flow, and configuration invariants.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvannadii%2Frevaer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvannadii%2Frevaer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvannadii%2Frevaer/lists"}