-
.NET 8 SDK (8.0.404 or later)
- Download: https://dotnet.microsoft.com/download/dotnet/8.0
- Verify:
dotnet --versionshould show 8.0.x
-
Node.js 20.11.1 (managed via nvm or volta)
- Download: https://nodejs.org/
- Verify:
node --versionshould show v20.11.1
-
Yarn 1.22.19
- Install:
npm install -g yarn@1.22.19 - Verify:
yarn --versionshould show 1.22.19
- Install:
- Docker & Docker Compose (for containerized development/deployment)
- Visual Studio 2022 or JetBrains Rider (for IDE development)
- VS Code with C# extension
git clone https://github.com/maddefientist/Readarr.git
cd Readarrdotnet restore src/Readarr.slnyarn install --frozen-lockfile --network-timeout 120000./build.sh --all./build.sh --backend./build.sh --frontendThe build.sh script supports several flags:
--backend- Build .NET backend only--frontend- Build React frontend only--packages- Create distribution packages--installer- Build Windows installer (requires Inno Setup)--lint- Run code linters (ESLint, Stylelint)--all- Build everything
Specify target platform with -r or --runtime:
./build.sh --backend -r linux-x64
./build.sh --backend -r win-x64
./build.sh --backend -r osx-arm64Available RIDs:
win-x64,win-x86(Windows)linux-x64,linux-musl-x64,linux-arm64,linux-musl-arm64,linux-arm,linux-musl-arm(Linux)osx-x64,osx-arm64(macOS)freebsd-x64(FreeBSD - optional)
dotnet test src/Readarr.sln./test.sh Unit./test.sh Integration./test.sh Automationcd _output
./Readarr # Linux/macOS
Readarr.exe # Windows- Web UI: http://localhost:8787
- API: http://localhost:8787/api/v1
Readarr/
├── src/ # C# backend source
│ ├── NzbDrone.Core/ # Core business logic
│ ├── Readarr.Api.V1/ # REST API v1
│ ├── NzbDrone.Host/ # ASP.NET Core host
│ ├── NzbDrone.Common/ # Shared utilities
│ └── *.Test/ # Test projects
├── frontend/ # React/TypeScript frontend
│ ├── src/ # Frontend source
│ └── build/ # Webpack config
├── _output/ # Build output
├── _tests/ # Test packages
├── _artifacts/ # Distribution packages
├── build.sh # Main build script
├── test.sh # Test runner
├── global.json # .NET SDK version
└── .nvmrc # Node version
- .NET 8 (LTS through Nov 2026)
- ASP.NET Core 8 - Web framework
- Dapper - Micro-ORM
- SQLite / PostgreSQL - Databases
- FluentMigrator - Database migrations
- DryIoc - Dependency injection
- NLog - Logging
- React 17.0.2
- TypeScript 5.1.6
- Webpack 5 - Build tool
- Redux - State management
# Check SDK version
dotnet --version
# List installed SDKs
dotnet --list-sdks
# Should see 8.0.404 (or later 8.0.x)# Using nvm
nvm install
nvm use
# Using volta (auto-switches based on package.json)
volta install node@20.11.1# Clear cache and retry
yarn cache clean
yarn install --frozen-lockfile --network-timeout 120000Make sure you're targeting a valid runtime identifier:
dotnet --info # Check current RID
./build.sh --backend -r <your-rid>- Open
src/Readarr.sln - Set
Readarr.ConsoleorReadarr.Hostas startup project - Build and Run (F5)
- Open
src/Readarr.sln - Run configurations auto-generated
- Run/Debug as needed
- Install C# Dev Kit extension
- Open workspace root
- Use integrated terminal for build commands
- Create a feature branch from
develop - Make changes
- Run linters:
./build.sh --lint - Run tests:
dotnet test src/Readarr.sln - Commit with clear messages
- Push and create PR against
develop
- Deployment Guide - Docker deployment
- Operations Guide - Production operations
- Architecture Overview - System architecture