No description
  • TypeScript 98.9%
  • JavaScript 0.5%
  • CSS 0.4%
  • Shell 0.1%
  • Dockerfile 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Doezer 29fcc3a15b
All checks were successful
Build Questarr image / build (push) Successful in 4m51s
Add Forgejo Actions workflow for local registry builds.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-13 02:51:00 -04:00
.claude Upate skill name 2026-07-05 14:50:39 +02:00
.forgejo/workflows Add Forgejo Actions workflow for local registry builds. 2026-07-13 02:51:00 -04:00
.github Add docker metadata to packages builds 2026-07-12 19:01:26 +02:00
.husky Gate GOAL score E2E credit on Playwright validation (#679) 2026-06-18 07:51:59 +02:00
.jules ⚡ Bolt: Consolidate calendar array traversals (#782) 2026-07-11 15:04:57 +02:00
client [S:80.4->82.6] coverage_depth: add Notifications and Blacklist tab tests to SettingsPage 2026-07-12 19:56:36 +02:00
docs Raise test coverage above 75% on all four metrics (#784) 2026-07-11 22:22:30 +02:00
images Add post processing pipeline to Questarr (#583) 2026-06-19 11:41:16 +02:00
memory [QSTR-222] Fix Synology DS2 task creation error 120 (#701) 2026-07-11 14:52:08 +02:00
migrations Fix migration file 2026-07-05 15:11:58 +02:00
questarr Update questarr description + update home assistant info 2026-07-05 14:50:25 +02:00
scripts Added deprecated dependencies check 2026-07-05 01:20:10 +02:00
security/vex Add VEX feed for third-party vulnerability exploitability tracking (#751) 2026-07-03 11:57:43 +02:00
server Merge branch 'release/1.4.0' of github.com:Doezer/Questarr into release/1.4.0 2026-07-12 17:24:18 +02:00
shared feat(import-history): new page displaying list of import tasks (claim game, post processing import, steam sync.) new retention purge cron (#714) 2026-06-30 00:49:12 +02:00
tests Fix 2e2 testing failing 2026-07-06 22:05:45 +02:00
unraid Publish UNRAID template 2026-03-21 09:15:16 +01:00
.dockerignore fix: update Dockerfile and docker-compose for improved health checks and environment variable defaults 2026-01-03 08:35:19 +01:00
.env.example Document secrets and credentials management (#720) 2026-07-01 14:25:48 +02:00
.gitattributes fix: CRLF in entrypoint.sh and keep it from happening 2026-06-06 08:54:03 +02:00
.gitignore update gitignore 2026-07-01 23:34:05 +02:00
.gitmodules chore: remove unused doc, add downloaders compatibility, grooming 2026-07-02 23:58:44 +02:00
.impeccable.md feat: improve mobile view 2026-06-06 09:17:55 +02:00
.pre-commit-config.yaml [StepSecurity] Apply security best practices (#748) 2026-07-03 13:37:00 +02:00
.prettierignore chore: add ESLint and Prettier configuration 2025-12-08 12:13:23 +01:00
.prettierrc chore: add ESLint and Prettier configuration 2025-12-08 12:13:23 +01:00
.secretlintignore Add secretlint scanning to CI and pre-commit hook (#718) 2026-07-01 09:03:10 +02:00
.secretlintrc.json Add secretlint scanning to CI and pre-commit hook (#718) 2026-07-01 09:03:10 +02:00
AGENTS.md formatting 2026-07-02 00:47:51 +02:00
CLAUDE.md update gitignore 2026-07-01 23:34:05 +02:00
codecov.yml Add post processing pipeline to Questarr (#583) 2026-06-19 11:41:16 +02:00
components.json Reformat 2025-12-31 13:17:13 +01:00
docker-compose.migrate.yml Migrate database from PostgreSQL to SQLite (#327) 2026-01-20 19:31:56 +01:00
docker-compose.yml chore: update release/1.4.0 with main (#700) 2026-06-23 23:03:21 +02:00
Dockerfile Add Apprise CLI mode (not needed an Apprise server) (#768) 2026-07-05 23:57:08 +02:00
drizzle.config.ts Migrate database from PostgreSQL to SQLite (#327) 2026-01-20 19:31:56 +01:00
entrypoint.sh chore: update release/1.4.0 with main (#700) 2026-06-23 23:03:21 +02:00
eslint.config.js feat: download indicators, search results badge, and shared view controls (#484) 2026-04-17 22:26:33 +02:00
GOAL-product.md Update product goal definition 2026-07-05 15:14:07 +02:00
GOAL.md Update goal.md 2026-07-05 15:25:59 +02:00
iterations.jsonl Log iteration 5 in iterations.jsonl 2026-07-12 20:00:52 +02:00
package-lock.json Add "Ghost the Terminal" hidden three.js stealth mini-game (#783) 2026-07-11 14:40:51 +02:00
package.json Add "Ghost the Terminal" hidden three.js stealth mini-game (#783) 2026-07-11 14:40:51 +02:00
playwright.config.ts 🛡️ Sentinel: [HIGH] Fix SSRF DNS Rebinding vulnerability (#385) 2026-04-17 22:23:10 +02:00
README.md add 'Maintained' badge 2026-07-07 19:10:06 +02:00
repository.yaml chore: remove unused doc, add downloaders compatibility, grooming 2026-07-02 23:58:44 +02:00
sonar-project.properties feat(search): date filter, infinite scroll, and library delete (#673) 2026-06-23 09:04:10 +02:00
tailwind.config.ts chore: update dependencies and refactor Tailwind CSS configuration 2025-12-03 08:20:09 +01:00
tsconfig.build.json Migrate database from PostgreSQL to SQLite (#327) 2026-01-20 19:31:56 +01:00
tsconfig.json Bump to typescript 6 2026-07-06 23:40:32 +02:00
vite.config.ts fix ts smell in vite config 2026-07-12 17:22:35 +02:00
vitest.config.ts Raise test coverage above 75% on all four metrics (#784) 2026-07-11 22:22:30 +02:00

Questarr Logo

A video game management application inspired by the -Arr apps (Sonarr, Radarr, Prowlarr...) and GamezServer. Track and organize your video game collection with automated discovery and download management.

Docker Pulls GHCR License

CI Codecov Maintenance

Discord Buy Me A Coffee

Features

  • 🎮 Game Discovery: Browse popular games, new releases, and upcoming titles via IGDB integration and xREL.to. Sync your Steam wishlist.
  • 📚 Library Management: Track your game collection with status indicators (Wanted, Owned, Playing, Completed), user ratings, and Early Access badges.
  • ⬇️ Download Management: Integrate with indexers (Prowlarr/Torznab/Newsznab), torrent/usenet downloaders (qBittorrent, Transmission, rTorrent / sabnzbd, nzbget), and optionally enable auto-download to get them right when they're there. Import downloads automatically to your library folder.
  • 🔍 Search & Filter: Find games by genre, platform, and search terms. Automatically search for added games until available on your indexers. Blacklist unwanted releases and set preferred release groups and platforms.
  • Notifications: thanks to Apprise, you can send notifications to 100+ providers.
  • 🗂️ Rich Metadata: Game details enriched with IGDB, Steam, PCGamingWiki links, and NexusMods pages, as well as trending mods (if applicable).
  • 📊 Stats Page: Visualize your collection statistics, with Discord sharing support.
  • 📰 RSS Feeds: Monitor releases from your favorite groups directly within the app.
  • 🔒 Privacy Focused: Hardened security (CSP, SSRF protection), as well as SSL support. The repo itself uses OpenSSF Best Practices, Aikido security checks, CodeQL, StepSecurity and SonarCloud.
  • ✨ Clean Interface: UI optimized for browsing game covers and metadata, with light/dark mode.

Screenshots

👀 See the app in action

Dashboard

Your central hub for recent activity, collection overview and downloading available games.

Discover Games

Browse and find new games to add to your collection.

Library & Wishlist

Manage your wanted and owned games.

Calendar

Keep track of upcoming releases.

Downloads Queue

Monitor your downloaders' active downloads and history.

Statistics

Check out your library statistics.

RSS & xRel.to feeds

Custom RSS feeds and xRel.to flux matched to IGDB games directly into the app

Settings

Configure indexers, downloaders, and application preferences.

Tech Stack

React TypeScript Vite Tailwind CSS Node.js SQLite

  • Frontend: React 18, TypeScript, Vite, Tailwind CSS, shadcn/ui
  • Backend: Node.js, Express, TypeScript
  • Database: SQLite with Drizzle ORM
  • APIs: IGDB (game metadata), Torznab/Newznab (indexer search), PCGamingWiki, NexusMods, xREL.to
  • AIs usage:
    • Claude and Github Copilot are used for AI-Assisted coding, internal code reviews, PR cleanup. Eventually automated coding and troubleshooting for small tasks and bug reports.
    • Gemini & Codex are used for automated code reviews, and brainstorming from time to time (as well as Perplexity for this usage).
    • Google Jules is used for light periodical refactoring.

Installation

Docker is the easiest way to deploy Questarr with all dependencies included. Questarr uses a SQLite database which is self-contained in the application container.

Fresh Install

Option 1: One-liner (Simplest)

docker run -d -p 5000:5000 -v ./data:/app/data --name questarr ghcr.io/doezer/questarr:latest

Option 2: Docker Compose

  1. Create a docker-compose.yml file:

    services:
      app:
        image: ghcr.io/doezer/questarr:latest
        ports:
          - "5000:5000"
        volumes:
          - ./data:/app/data
        environment:
          - SQLITE_DB_PATH=/app/data/sqlite.db
        restart: unless-stopped
    
  2. Start the application:

    docker compose up -d
    
  3. Access the application: Open your browser to http://localhost:5000

Upgrading from v1.0 (PostgreSQL)

If you are upgrading from an older version that used PostgreSQL, you need to migrate your data.

  1. Stop your current application:

    docker compose down
    
  2. Get the migration tools: Download the docker-compose.migrate.yml file to your directory.

  3. Run the migration: This command spins up your old database and converts the data to the new format automatically.

    docker compose -f docker-compose.migrate.yml up --abort-on-container-exit
    
  4. Update your deployment: Replace your docker-compose.yml with the new version (see "Fresh Install" above).

  5. Start the new version:

    docker compose up -d
    

See docs/MIGRATION.md for more details.

Home Assistant Add-on

You can install Questarr as a Home Assistant add-on from this repository:

  1. In Home Assistant, open Settings → Add-ons → Add-on Store.
  2. Click the menu (⋮) and choose Repositories.
  3. Add this repository URL: https://github.com/Doezer/Questarr
  4. Install the Questarr add-on and start it.
  5. Open http://<home-assistant-host>:5000 to access the UI.

Configuration

  1. First-time setup:
  • Create your admin account
  • Configure the IGDB credentials

Once logged-in:

  • Configure indexers
  • Add downloaders
  • Add games!

See Configuration on the Wiki for more detailed info.

Getting IGDB API Credentials

IGDB provides game metadata (covers, descriptions, ratings, release dates, etc.).

  1. Go to Twitch Developer Console
  2. Log in with your Twitch account (create one if needed)
  3. Click "Register Your Application"
  4. Fill in:
    • Name: Questarr (or any name)
    • OAuth Redirect URLs: http://localhost (not used, but required)
    • Category: Application Integration
  5. Click "Create"
  6. Copy your Client ID and Client Secret
  7. Add them to your .env file
Advanced usage

Docker compose

This is mainly for users who want the latest commit (e.g when trying out fixes for an issue) or contributing users.

  1. Clone the repository:
git clone https://github.com/Doezer/Questarr.git
cd Questarr
  1. Configure the application: Edit docker-compose.yml directly if you need to setup a specific environment.

  2. Build and start the containers:

docker-compose up -d
  1. Access the application: Open your browser to http://localhost:5000

Update to latest version for Docker

Your database content will be kept.

git pull
docker-compose down
docker-compose build --no-cache
docker-compose up -d

For development or custom deployments without Docker.

  1. Clone and install dependencies:
git clone https://github.com/Doezer/Questarr.git
npm install
  1. Configure environment variables in .env: See the .env.example for available variables.

  2. Initialize the database: This will run available migration files.

npm run db:migrate
  1. Development mode (with hot reload):
npm run dev
  1. Access the application: Open your browser to http://localhost:5000

Troubleshooting

See Troubleshooting on the Wiki

Getting Help

Project Security & Documentation

Contributing

Contributors

Made with contrib.rocks.

License

GPL3 License - see COPYING file for details.

Acknowledgments

Star History

Star History Chart