- .NET 10 SDK
- Docker (optional, for container parity tests)
cd ArrDash
dotnet run --project src/ArrDash/ArrDash.csprojDefault URL: http://localhost:5000 or https://localhost:5001 (see launch output).
Set service env vars or edit src/ArrDash/appsettings.json for upstream URLs. For local dev without real *arr instances, panels will be empty but the app should start.
export ARRDASH_CONFIG_PATH=/tmp/arrdash-config
mkdir -p "$ARRDASH_CONFIG_PATH"dotnet test tests/ArrDash.Tests/ArrDash.Tests.csprojWithout local SDK:
docker run --rm -v "$PWD:/src" -w /src/tests/ArrDash.Tests \
mcr.microsoft.com/dotnet/sdk:8.0 dotnet test| Area | Examples |
|---|---|
| Settings wiring | Every UserLayoutPreferences property consumed |
| Theme | Cache keys, colour normalization, CSS variables |
| Filters | Recent window days vs count limits |
| Display helpers | Relative time, byte formatting |
| Behaviour | Startup page, manual refresh, service enable flags |
| Project | Role |
|---|---|
src/ArrDash/ArrDash.csproj |
Web application |
tests/ArrDash.Tests/ArrDash.Tests.csproj |
xUnit tests referencing ArrDash |
Key dependencies (see .csproj):
MudBlazor- ASP.NET Core Blazor Server
docker compose build
# or
docker build -t arrdash:latest .Publish output is a framework-dependent deployment on mcr.microsoft.com/dotnet/aspnet:8.0.
- Settings — add help text in
SettingsHelpTexts.cs; wire preview viaScheduleLivePreviewNow - New preference — add to
UserLayoutPreferences, load/save inLayoutPreferencesService, test inSettingsFormCoverageTests - Upstream client — extend
ArrClientBasepattern inServices/Clients/ - UI — prefer existing shared components; panel accents from
Prefs.GetPanelAccent
| Issue | Where to look |
|---|---|
| Setting ignored | SettingsConsumptionTests, component Parameter binding |
| Theme not applying | ThemeBuilder.GetRootStyle, MainLayout theme cache |
| Stale dashboard | MediaAggregatorService, SignalR hub connection in Home.razor |
| Poster 404 | PosterProxyService, upstream *arr image endpoints |
Enable detailed logging in appsettings.Development.json if present, or:
"Logging": { "LogLevel": { "Default": "Debug" } }-
Create an issue on the ArrDash project board before coding:
bash scripts/arrdash-issue-create.sh --title "[ArrDash] ..." --body "..." --label area:backend --status Ready
-
Branch from
main:feature/issue-<id>-short-name -
Implement + tests + docs + CHANGELOG
-
PR to
mainwithCloses #<id>
See github-workflow.md and documenting-changes.md.
Open this repo root in Cursor. Rules in .cursor/rules/ enforce issue-first development — see AGENTS.md.
- Version/tag if publishing images
- Update docs for new settings or services
- Run full test suite
- Verify Docker build
- No secrets in committed files