Skip to content

Latest commit

 

History

History
123 lines (85 loc) · 3.48 KB

File metadata and controls

123 lines (85 loc) · 3.48 KB

Development

Prerequisites

  • .NET 10 SDK
  • Docker (optional, for container parity tests)

Run locally

cd ArrDash
dotnet run --project src/ArrDash/ArrDash.csproj

Default 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.

Config path

export ARRDASH_CONFIG_PATH=/tmp/arrdash-config
mkdir -p "$ARRDASH_CONFIG_PATH"

Run tests

dotnet test tests/ArrDash.Tests/ArrDash.Tests.csproj

Without local SDK:

docker run --rm -v "$PWD:/src" -w /src/tests/ArrDash.Tests \
  mcr.microsoft.com/dotnet/sdk:8.0 dotnet test

Test coverage areas

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 structure

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

Build Docker image

docker compose build
# or
docker build -t arrdash:latest .

Publish output is a framework-dependent deployment on mcr.microsoft.com/dotnet/aspnet:8.0.

Coding conventions

  • Settings — add help text in SettingsHelpTexts.cs; wire preview via ScheduleLivePreviewNow
  • New preference — add to UserLayoutPreferences, load/save in LayoutPreferencesService, test in SettingsFormCoverageTests
  • Upstream client — extend ArrClientBase pattern in Services/Clients/
  • UI — prefer existing shared components; panel accents from Prefs.GetPanelAccent

Debugging tips

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" } }

Contributing

  1. Create an issue on the ArrDash project board before coding:

    bash scripts/arrdash-issue-create.sh --title "[ArrDash] ..." --body "..." --label area:backend --status Ready
  2. Branch from main: feature/issue-<id>-short-name

  3. Implement + tests + docs + CHANGELOG

  4. PR to main with Closes #<id>

See github-workflow.md and documenting-changes.md.

Cursor agents

Open this repo root in Cursor. Rules in .cursor/rules/ enforce issue-first development — see AGENTS.md.

Release checklist

  • Version/tag if publishing images
  • Update docs for new settings or services
  • Run full test suite
  • Verify Docker build
  • No secrets in committed files

Related documentation