Video Hub App 3 indexes local video files with FFmpeg and Angular
Official repository for Video Hub App
At a glance
- What is it?
- whyboris/Video-Hub-App is an Electron and Angular desktop application that browses, searches and previews video files sitting on your own disk, with FFmpeg doing the media work and a phone acting as a remote control. The source is MIT licensed, while the ready-made build is sold for 10 dollars on the project site.
- Who is it for?
- Video Hub App fits someone with a large local video collection who wants thumbnails, search and playback from a desktop window without uploading anything to a server, and it fits a developer who wants to extend an Angular and Electron codebase rather than start one. It does not fit a multi-device household that wants one library shared across the network, and it does not fit someone who wants the binary for free.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 28 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A local video browser built on Angular and Electron
The idea is simple enough to state in one line: give the video files sitting on your disk the same kind of interface people expect from a streaming site, with thumbnails, search and quick preview, and let it run as a desktop application on Windows, macOS or Linux. The project describes itself as the fastest way to browse, search and organize videos on your computer and compares the experience to YouTube, except the library is yours and nothing leaves the machine.
The implementation is a TypeScript codebase that puts Angular on top of Electron. The repository root holds `main.ts` for the Electron main process, a `node/` directory, the Angular application under `src/`, a separate `remote/` directory for the phone-facing feature, an `i18n/` folder for translations and an `interfaces/` folder for shared type declarations. Build configuration is split across `angular.json`, `electron-builder.json` and four TypeScript configs for the app, the base, the serve bundle and the worker.
The pieces that make it feel like a media application rather than a file browser come from well known libraries. `ngx-virtual-scroller` handles long lists, `fdir` walks directories, `chokidar` watches for changes, `Fuse.js` provides fuzzy search, `trash` moves deleted files to the system trash instead of unlinking them, and `electron-window-state` remembers where and how large the window was. `async` handles the asynchronous flow, and `@ngx-translate/core` is why the `i18n/` folder exists at all.
MIT source, but the packaged app is sold
The licence is MIT, and the `LICENSE` file in the repository root carries it. The permission is generous, yet the author adds a request alongside it: he asks that you do not distribute free copies of the software unless you have significantly changed it. That is a request rather than a licence term, and it sits in tension with the MIT grant, so anyone planning to repackage it should decide for themselves how far to go. For an evaluator the practical question is narrower: is the code readable, buildable and forkable, and the answer to that is yes, because the whole application is in the repository.
What is not free is the convenience build. The project site sells the software for 10 dollars, and the site is also where the download for each platform lives. The project also reports that more than 16,000 dollars from sales has been donated to the Against Malaria Foundation, with a public donation history linked from the project page.
For a self-hosted deployment the cost question is simpler: clone the repository, install the dependencies and build the installers yourself. What you get instead of a paid download is the version in the repository, which the project warns is usually ahead of the public release and may contain bugs.
Three npm scripts get you from clone to installer
The development instructions are short, which is a good sign for a project of this size. Installation uses a legacy peer dependency flag, which exists because the Angular and Electron tooling in this dependency tree do not agree on peer versions:
npm install --legacy-peer-depsDevelopment then runs the Angular dev server and Electron together, and the Electron build is produced by a separate script:
npm start
npm run electronThe `package.json` declares `node` `>=v18` as the engine requirement and the repository carries an `.nvmrc` file. The build scripts in `package.json` show how the pieces fit together. The Electron build first runs a remote feature check, then a production build, then `electron-builder`, and finally a size check script from the `bin/` directory. The production build itself compiles the serve bundle with `tsc` before running `ng build` with a relative base href, which is what makes the packaged application load from disk rather than from a web server.
The dependency list is pinned to specific versions, including `@ffprobe-installer/ffprobe` at 2.1.2, `@iharbeck/ngx-virtual-scroller` at 19.0.1 and `@ngx-translate/core` at 17.0.0. A `postinstall` hook runs `electron-builder install-app-deps`, so native modules are rebuilt for the Electron runtime during install rather than being left for the developer to sort out.
FFmpeg and FFprobe do the media work inside the bundle
Video playback and thumbnail generation are delegated to FFmpeg and FFprobe, and the project is explicit that it uses FFmpeg libraries under LGPLv2.1 with binaries obtained from the `node-ffmpeg-installer` project. The `@ffprobe-installer/ffprobe` dependency pulls a matching probe binary into the package.
That arrangement has one practical consequence the project calls out. macOS builds exist for both M1 and Intel, but if you build for an architecture different from the one you are sitting at, you may need to update the FFmpeg and FFprobe executables by hand. For anyone building on a Mac and distributing to the other architecture, that is a real step in the process rather than a footnote.
The same theme runs through the rest of the tooling. There is a `demo/` directory with a standalone HTML page and screenshots, the Angular CLI is listed as optional but useful, and debugging a production build is done with Debugtron, the Electron inspector tool, rather than by rebuilding with development flags. The project documentation also flags the Node version point: matching the version Electron uses internally, `v24.16.0`, is described as the best choice.
The remote folder turns the app into a phone remote
The feature that separates this from an ordinary file browser is the remote. After the app starts, the user can switch on a server, and a simpler version of the interface becomes reachable from a phone or tablet on the same WiFi network, where it acts as a remote control for playing videos. The details live in the `remote/` directory of the repository, which has its own README with instructions.
The implementation hints are visible in the repository layout. The `package.json` includes a `hasRemote` script that runs `sh ./bin/hasRemoteCheck.sh`, and the `electron` build script runs that check before anything else, so the remote capability is verified as part of the build rather than being bolted on afterwards. There is a separate `tsconfig-serve.json` for the serve bundle and a `tsconfig.worker.json` for a worker, which is consistent with running a second, lighter front end on the network.
The scope is worth being precise about. The phone opens a simplified interface on the local network and controls playback. That is a different thing from a media server that indexes your library and streams it to any device over the internet, and if your household wants a shared library across several machines, this is not the design that gives it to you.
Releases are sparse and the branch runs ahead of them
The release history shows long stretches of quiet followed by concentrated bursts of work. v3.1.0 came on 2021-02-21, v3.2.0 on 2023-02-26, and v3.3.0 on 2026-09-01. Between the second and third release there is a gap of more than three and a half years, and the project marked v3.3.0 as its eighth anniversary. The repository is not archived, and the last push was on 2026-09-25, so the work continues even though the tagged releases are infrequent.
The relationship between the branch and the release matters more than the dates. The project states plainly that the repository is usually ahead of the publicly released version and that it is work in progress with possible bugs. The `package.json` version field reads 3.3.0, matching the newest tag, while the commits after that tag are already on `main`.
The practical reading for an adopter is that stability and freshness point in opposite directions here. The release is the safer artifact to run, since it is the one that was packaged and tested as a product, while `main` is where new work lands and where a bug is most likely to sit. Contributors are welcome, and the project points at the issues list both for planned work and for ideas, with separate notes on improving translations, where the `i18n/` folder is the place to add a language, and on adding an icon through the component folder under `src/app/components/icon`.
Editorial conclusion
Video Hub App fits someone with a large local video collection who wants thumbnails, search and playback from a desktop window without uploading anything to a server, and it fits a developer who wants to extend an Angular and Electron codebase rather than start one. It does not fit a multi-device household that wants one library shared across the network, and it does not fit someone who wants the binary for free. Before adopting, check the licence request rather than the licence alone, because the project asks that free copies not be redistributed unless significantly changed, and check that the version you build matches the one you run, since the last push was on 2026-09-25 while the newest tagged release is v3.3.0 from 2026-09-01 and the branch is described as work in progress.
Frequently asked questions
How do I build Video Hub App from source?
Run `npm install --legacy-peer-deps`, then `npm start` for development or `npm run electron` to produce the Electron build with electron-builder. The package requires Node v18 or newer, and the project suggests matching the Node version Electron uses internally, v24.16.0.
Does Video Hub App work without an internet connection?
The application browses, searches and previews video files on your own computer, and the remote control feature is used from a phone or tablet on the same WiFi network, so it does not depend on a remote streaming service.
How much does Video Hub App cost?
The packaged application is sold for 10 dollars through videohubapp.com. The source code in the repository is MIT licensed and can be built yourself, and the project asks that free copies not be redistributed unless significantly changed.
Can I use Video Hub App as a remote control on my phone?
Yes. After the app starts you can turn on a server, and a simpler version of the interface opens on a phone or tablet on the same WiFi, where it plays and controls videos. The instructions are in the remote/README.md file of the repository.
What are the latest Video Hub App releases?
v3.3.0 was released on 2026-09-01, after v3.2.0 on 2023-02-26 and v3.1.0 on 2021-02-21. The repository is not archived and the last push was on 2026-09-25, and it is usually ahead of the released version.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/whyboris-video-hub-app)Was this useful?