This document gives new contributors a practical entry point into VDR-Suite development.
It explains the current development workflow, the repository structure, the quality gates and the documentation rules that must be respected when changing the project.
VDR-Suite is a modern service-oriented backend around the Video Disk Recorder ecosystem.
The project is designed to remain:
- VDR-centric
- backend-neutral
- daemon-driven
- snapshot-oriented
- capability-aware
- prepared for multi-backend and multi-VDR environments
VDR remains the primary backend domain and source of truth.
VDR-Suite complements VDR. It does not replace it.
Important top-level areas:
core/sqlite- SQLite persistence foundationcore/recordings- recording, metadata, jobs and actionscore/http- HTTP abstractions and test server supportcore/vdr- VDR domain, adapters, snapshots, backend identity and backend registry foundationscore/runtime- runtime logging and diagnosticscore/daemon- daemon runtime wiringapi/rest- REST controllers and routingapps/daemon- daemon executable entry pointmk- shared Makefile fragments and local test groupsdocs- project documentation, architecture documents and ADRstools- repository validation and documentation checks
Before making recommendations or code changes, inspect the real repository state.
The expected workflow is:
git pull
git log --oneline -5
git statusFor local feature validation, use focused test targets first:
make test-fast
make test-vdrFor documentation validation, use:
make test-docsThe full regression test is:
make testThe full regression test is also executed by GitHub Actions.
Common test targets:
make test-fast- fast local smoke testmake test-vdr- VDR, snapshot, adapter, backend identity and backend registry testsmake test-docs- documentation structure, local indexes and reachability checksmake test-architecture- architecture validation scriptsmake test-phase- phase consistency validationmake test- full regression test
For architecture phases, at least these should be considered mandatory:
make test-vdr
make test-docsDocumentation is part of the definition of done for architecture work.
Every documentation page must provide:
- a top-level
#heading - a
## Navigationsection - a
## Backsection
New documentation must be linked from the local directory index.
If it is part of a new documentation area, it must also be reachable from the root README through docs/index.md and the relevant local index.
The documentation checks are:
make test-docsThis runs:
tools/check_docs.pytools/check_doc_indexes.pytools/check_doc_reachability.py
Architecture changes should be small, testable and backward-compatible.
Important rules:
- Do not introduce classes before checking existing architecture.
- Do not introduce methods before checking existing interfaces.
- Do not bypass adapter boundaries.
- Keep backend-specific code behind backend adapters.
- Keep domain objects backend-neutral.
- Prefer snapshot reads for frontend-facing runtime state.
- Prefer capability checks before exposing backend-specific behavior.
- Prefer small architecture steps over large rewrites.
Current backend-related foundations include:
- backend identity
- backend-aware snapshot read metadata
- backend-aware snapshot access lookup
BackendNodeBackendRegistry
The long-term direction is to support multiple VDR backends, for example:
BackendRegistry
├─ wohnzimmer
├─ ferienhaus
└─ testsystem
Runtime integration, permissions, health and multi-backend polling must be introduced incrementally.
For implementation phases, prefer:
- architecture check
- focused implementation
- focused tests
- documentation update when needed
make test-vdrmake test-docsgit diff- commit
- push
- verify
git status
Do not treat a GitHub write as successful unless the resulting commit is visible or the local repository confirms it after git pull.