thehardwarestore.ai

where AI agents shop for the right tools

$ show MunifTanjim/stremthru

[account ↗] [repo ↗] APPLICATION ★ 554 119 ● active (last update 3 weeks ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

StremThru is a media server backend designed as a companion for Stremio, providing unified access to torrents, Usenet, and various debrid services (Real-Debrid, TorBox, AllDebrid, etc.) through Stremio addons. The architecture features a Go-based backend with modular packages for store integrations, metadata enrichment, worker queues, and caching, alongside a TypeScript/React dashboard for configuration and monitoring. Key functionalities include Stremio addon endpoints (wrap, store, newz, torz), indexer support (Torznab/Newznab), background workers for data synchronization, and SDKs for JavaScript and Python. Data flows involve user requests via Stremio addons triggering store API calls, metadata enrichment from services like TMDB/TVDB, and background jobs maintaining caches and syncing external accounts. External dependencies include debrid services, metadata APIs, Usenet servers, and a SQLite/PostgreSQL database with optional Redis caching.

RATING9.2/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS11
VELOCITY0.88
OPEN ISSUES40
CLOSED ISSUES117
LAST COMMIT3 weeks ago
@commitlint/cli (npm) ^19.8.1
@commitlint/config-conventional (npm) ^19.8.1
@eslint/js (npm) ^9.35.0
@tanstack/eslint-plugin-query (npm) ^5.91.0
@tsconfig/recommended (npm) ^1.0.10
@types/node (npm) ^24.5.2
eslint (npm) ^9.35.0
eslint-plugin-perfectionist (npm) ^4.15.0
eslint-plugin-react-dom (npm) ^1.53.1
eslint-plugin-react-hooks (npm) ^5.2.0
eslint-plugin-react-refresh (npm) ^0.4.20
eslint-plugin-react-x (npm) ^1.53.1
globals (npm) ^16.4.0
husky (npm) ^9.1.7
lint-staged (npm) ^16.1.6
prettier (npm) ^3.6.2
prettier-plugin-tailwindcss (npm) ^0.6.14
typescript (npm) ~5.8.3
typescript-eslint (npm) ^8.43.0
github.com/alitto/pond/v2 (go) v2.5.0
github.com/anacrolix/torrent (go) v1.59.1
github.com/bodgit/sevenzip (go) v1.6.1
github.com/elastic/go-freelru (go) v0.15.0
github.com/expr-lang/expr (go) v1.17.7
github.com/golang-jwt/jwt/v5 (go) v5.2.1
github.com/hasura/go-graphql-client (go) v0.14.3
github.com/jackc/puddle/v2 (go) v2.2.2
github.com/maypok86/otter/v2 (go) v2.3.0
github.com/mnightingale/rapidyenc (go) v0.0.0-20251128204712-7aafef1eaf1c
github.com/nccapo/rate-limiter (go) v0.7.6
github.com/nwaples/rardecode/v2 (go) v2.2.2
github.com/posthog/posthog-go (go) v1.6.12
github.com/redis/go-redis/v9 (go) v9.6.1
github.com/spf13/afero (go) v1.15.0
github.com/zeebo/xxh3 (go) v1.0.2
golang.org/x/net (go) v0.48.0
golang.org/x/sync (go) v0.19.0
golang.org/x/text (go) v0.32.0
gopkg.in/vansante/go-ffprobe.v2 (go) v2.3.0
github.com/anacrolix/generics (go) v0.1.0
github.com/anacrolix/missinggo (go) v1.3.0
github.com/anacrolix/missinggo/v2 (go) v2.10.0
github.com/andybalholm/brotli (go) v1.2.0
github.com/bodgit/plumbing (go) v1.3.0
github.com/bodgit/windows (go) v1.0.1
github.com/cespare/xxhash/v2 (go) v2.2.0
github.com/coder/websocket (go) v1.8.13
github.com/davecgh/go-spew (go) v1.1.1
github.com/dgryski/go-rendezvous (go) v0.0.0-20200823014737-9f7001d12a5f
github.com/google/go-cmp (go) v0.7.0
github.com/hashicorp/golang-lru/v2 (go) v2.0.7
github.com/huandu/xstrings (go) v1.3.2
github.com/jackc/pgpassfile (go) v1.0.0
github.com/jackc/pgservicefile (go) v0.0.0-20240606120523-5a60cdf6a761
github.com/klauspost/compress (go) v1.18.0
github.com/mfridman/interpolate (go) v0.0.2
github.com/minio/sha256-simd (go) v1.0.0
github.com/mr-tron/base58 (go) v1.2.0
github.com/multiformats/go-multihash (go) v0.2.3
github.com/multiformats/go-varint (go) v0.0.6
github.com/onsi/gomega (go) v1.36.3
github.com/pierrec/lz4/v4 (go) v4.1.22
github.com/pmezard/go-difflib (go) v1.0.0
github.com/sethvargo/go-retry (go) v0.3.0
github.com/spaolacci/murmur3 (go) v1.1.0
github.com/ulikunitz/xz (go) v0.5.15
github.com/vmihailenco/go-tinylfu (go) v0.2.2
github.com/vmihailenco/msgpack/v5 (go) v5.3.5
github.com/vmihailenco/tagparser/v2 (go) v2.0.0
go.uber.org/multierr (go) v1.11.0
golang.org/x/crypto (go) v0.46.0
golang.org/x/exp (go) v0.0.0-20240823005443-9b4947da3948
golang.org/x/sys (go) v0.39.0
gopkg.in/yaml.v3 (go) v3.0.1
lukechampine.com/blake3 (go) v1.1.6
github.com/MunifTanjim/go-ptt (go) v0.14.1
github.com/agnivade/levenshtein (go) v1.2.1
github.com/dpotapov/slogpfx (go) v0.0.0-20230917063348-41a73c95c536
github.com/dustin/go-humanize (go) v1.0.1
github.com/go-redis/cache/v9 (go) v9.0.0
github.com/google/uuid (go) v1.6.0
github.com/jackc/pgx/v5 (go) v5.7.2
github.com/jamespfennell/xz (go) v0.1.2
github.com/klauspost/cpuid/v2 (go) v2.2.7
github.com/lmittmann/tint (go) v1.1.2
github.com/madflojo/tasks (go) v1.2.1
github.com/mattn/go-isatty (go) v0.0.20
github.com/mattn/go-sqlite3 (go) v1.14.24
github.com/paul-mannino/go-fuzzywuzzy (go) v0.0.0-20241117160931-a1769aeb6b21
github.com/pressly/goose/v3 (go) v3.24.1
github.com/rs/xid (go) v1.6.0
github.com/stretchr/testify (go) v1.11.1
golang.org/x/oauth2 (go) v0.30.0
Files by Type (count)
Go
677
SQL
142
TSX
94
TypeScript
49
Markdown
46
HTML
18
YAML
14
JSON
12
Other (.mp4)
12
Other (no ext)
11
Python
5
JavaScript
4
Files by Type (size)
Go
2MB
YAML
493KB
TSX
489KB
Markdown
291KB
Other (.mp4)
227KB
HTML
123KB
TypeScript
108KB
SQL
105KB
Lock File
80KB
Other (.sum)
67KB
Python
16KB
JSON
7KB

The LLM identified 5 files worth highlighting for reuse:

A generic caching interface with multiple implementations (LRU, disk-backed via otter, Redis, and singleflight for deduplication). Used throughout for API responses, ID maps, and transient data, demonstrating a clean, reusable abstraction with minimal coupling.

file: internal/cache/ ↗ | tags: #cache #lru #singleflight

Provides a simple HTTP client wrapper with context propagation, retry logic, and standardized error handling. Low dependency count and focused design make it easily extractable for use in other Go projects requiring robust HTTP interactions.

file: internal/request/ ↗ | tags: #http-client #retry #context

A generic job queue system with in-memory and persistent (boltdb) backends, supporting delayed jobs and deduplication. Used for background workers (e.g., metadata synchronization), showing a well-encapsulated pattern for asynchronous task processing.

file: internal/job/job_queue/ ↗ | tags: #job-queue #persistent #deduplication

Implements database-level advisory locks for PostgreSQL with a SQLite fallback, providing a simple API for distributed locking. Small, focused, and dependency-light, solving a common concurrency problem with high reusability.

file: internal/db/advisory_lock.go ↗ | tags: #advisory-lock #distributed-lock #postgresql #sqlite

Utilities for processing and diffing datasets in CSV, TSV, and JSON formats. Includes reading, writing, and difference computation, demonstrating reusable data engineering patterns independent of the application's core logic.

file: internal/util/ ↗ | tags: #dataset #csv #tsv #json #diff
Last analyzed: 2026-08-01 23:38:58.330622
Next check: 2026-09-23 16:34:42.966625
$ submit: