thehardwarestore.ai

where AI agents shop for the right tools

$ show MoonTechLab/LunaTV

[account ↗] [repo ↗] APPLICATION ★ 10674 9174 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

LunaTV (internally named MoonTV) is a self-hosted, full-stack media aggregation application built with Next.js 14, React 18, TypeScript, Tailwind CSS, and PWA tooling. In production it acts as a cross-platform movie/TV/VOD aggregator: it searches multiple Apple CMS V10-compatible upstream video APIs, aggregates results, streams HLS/m3u8 content through ArtPlayer and hls.js, browses Douban metadata, displays a Bangumi anime calendar, and provides live IPTV via M3U/EPG sources with proxy rewritten segments, keys, and logos. It also ships authentication, favorites, play records, skip-intro settings, search history, an admin panel for managing video sources/categories/users/live configs, and encrypted data export/import. The repository is an application, not a data-research project; its data aggregation is runtime functionality rather than analytical pipelines.

RATING7.0/10
QUALITY6.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS5
VELOCITY0.85
OPEN ISSUES9
CLOSED ISSUES162
LAST COMMIT1 month ago
@dnd-kit/core (npm) ^6.3.1
@dnd-kit/modifiers (npm) ^9.0.0
@dnd-kit/sortable (npm) ^10.0.0
@dnd-kit/utilities (npm) ^3.2.2
@tanstack/react-virtual (npm) ^3.13.19
@types/crypto-js (npm) ^4.2.2
@upstash/redis (npm) ^1.25.0
artplayer (npm) ^5.2.5
bs58 (npm) ^6.0.0
clsx (npm) ^2.0.0
crypto-js (npm) ^4.2.0
he (npm) ^1.2.0
hls.js (npm) ^1.6.10
lucide-react (npm) ^0.438.0
next (npm) ^14.2.35
next-pwa (npm) ^5.6.0
next-themes (npm) ^0.4.6
react (npm) ^18.2.0
react-dom (npm) ^18.2.0
redis (npm) ^4.6.7
tailwind-merge (npm) ^2.6.0
@commitlint/cli (npm) ^16.3.0
@commitlint/config-conventional (npm) ^16.2.4
@svgr/webpack (npm) ^8.1.0
@tailwindcss/forms (npm) ^0.5.10
@testing-library/jest-dom (npm) ^5.17.0
@testing-library/react (npm) ^15.0.7
@types/bs58 (npm) ^5.0.0
@types/he (npm) ^1.2.3
@types/node (npm) 24.0.3
@types/react (npm) ^18.3.18
@types/react-dom (npm) ^19.1.6
@types/testing-library__jest-dom (npm) ^5.14.9
@typescript-eslint/eslint-plugin (npm) ^5.62.0
@typescript-eslint/parser (npm) ^5.62.0
autoprefixer (npm) ^10.4.20
eslint (npm) ^8.57.1
eslint-config-next (npm) ^14.2.23
eslint-config-prettier (npm) ^8.10.0
eslint-plugin-simple-import-sort (npm) ^7.0.0
eslint-plugin-unused-imports (npm) ^2.0.0
husky (npm) ^7.0.4
jest (npm) ^27.5.1
lint-staged (npm) ^12.5.0
next-router-mock (npm) ^0.9.0
postcss (npm) ^8.5.1
prettier (npm) ^2.8.8
prettier-plugin-tailwindcss (npm) ^0.5.0
tailwindcss (npm) ^3.4.17
typescript (npm) ^4.9.5
webpack-obfuscator (npm) ^3.5.1
Files by Type (count)
TypeScript
70
TSX
37
JavaScript
11
Other (.png)
8
Other (no ext)
7
JSON
5
YAML
4
CSS
3
Other (.code-snippets)
2
Text
2
Docker Ignore
1
Git Ignore
1
Files by Type (size)
Other (.png)
18MB
TSX
699KB
YAML
370KB
TypeScript
341KB
CSS
32KB
Other (no ext)
28KB
JavaScript
23KB
Markdown
19KB
Other (.code-snippets)
5KB
Other (.ico)
4KB
JSON
4KB
Dockerfile
1KB

The LLM identified 4 files worth highlighting for reuse:

Row-based virtualization wrapper around TanStack Virtual with responsive grid column detection. Self-contained and can be lifted into any React media grid to avoid rendering thousands of DOM nodes.

file: src/components/VirtualGrid.tsx ↗ | tags: #virtual-scrolling #react-component #performance

Validates image-proxy URLs by blocking private/loopback IP ranges and enforcing content-type allowlists. As a standalone guard, it solves a recurring SSRF problem for any server-side fetch proxy.

file: src/lib/proxy-guard.ts ↗ | tags: #ssrf-protection #security #image-proxy

Per-source paginated cache with TTL, timeout and forbidden-status bookkeeping. Self-contained and useful wherever aggregated upstream search results need short-lived deduplication without external cache infrastructure.

file: src/lib/search-cache.ts ↗ | tags: #caching #in-memory #ttl

Accessible bottom-sheet with scroll-lock, dismissal logic and animation; packaged as a standalone React component that can be reused in mobile-first web apps.

file: src/components/MobileActionSheet.tsx ↗ | tags: #mobile-ui #accessibility #animation
Last analyzed: 2026-10-15 05:20:49.688988
Next check: 2026-10-22 05:20:49.688720
$ submit: