git clone https://github.com/iuliandita/digarr.git
cd digarr
bun installThe fastest way to get a dev environment running:
./scripts/dev-setup.shThis starts PostgreSQL in Docker, installs deps, runs migrations, and copies .env.example.
Or set it up manually:
docker run -d \
--name digarr-pg \
-e POSTGRES_USER=digarr \
-e POSTGRES_PASSWORD=digarr \
-e POSTGRES_DB=digarr \
-p 5432:5432 \
postgres:17-alpineCopy the env file and set your API keys:
cp .env.example .env
# edit .env with your Lidarr URL/key, Last.fm key, etc.Run migrations and start the dev servers:
bun run db:migrate
bun run dev # backend on :3000
bun run dev:web # frontend on :5173 (proxies /api to :3000)Digarr uses Biome for linting and formatting.
bun run lint # check
bun run lint:fix # auto-fixTypeScript strict mode is enforced. No any -- use unknown, generics, or proper types.
bun run test # run once
bun run test:watch # watch modeTests live in tests/. Keep them close to the code they cover.
- Fork and create a branch:
git checkout -b feat/my-thing - Make your changes, keeping commits focused
- Confirm
lint,typecheck, andtestall pass - Open a PR against
main-- fill in the template - A maintainer will review; be ready to iterate
Conventional commits: type(scope): description
Types: feat, fix, docs, refactor, chore, ci
Examples:
feat(pipeline): add spotify sourcefix(lidarr): handle 404 on artist lookupdocs: update contributing guide