Media Tools, published as Elytools, is a personal cross-platform toolbox for media and home-lab workflows.
This repository currently contains:
- an Electron desktop application for local utilities such as video encoding, torrent lookup, cache cleanup, and Home Assistant access
- a small ASP.NET Core backend that exposes weather endpoints and a SignalR screen-share hub
- a React frontend that consumes the backend and authentication APIs
Several parts of the project are wired to private infrastructure by default, so expect to adjust endpoints and credentials before using it outside the original environment.
. |-- desktop/ Electron + React + TypeScript application `-- web/ |-- back/ ASP.NET Core API and tests |-- front/ React web client `-- deploy/ Docker-based deployment assets The desktop app lives in desktop/ and is the most complete part of the repository.
- encode videos through FFmpeg/FFprobe
- search
nyaa.siand forward torrents to qBittorrent - purge
node_modulesfolders and build caches - open a configured Home Assistant instance
- store app settings locally and support OIDC login
- check GitHub releases for app updates
- Electron
- React
- TypeScript
- Vite via
electron-vite - Material UI
- Redux Toolkit
- Node.js
- pnpm 10
- FFmpeg available to the desktop runtime
- qBittorrent Web UI enabled if you want to use the torrent module
cd desktop pnpm install pnpm devUseful scripts:
pnpm devstarts the Electron app in development modepnpm lintruns ESLint with autofixpnpm formatruns Prettierpnpm cleanremoves release artifacts
cd desktop pnpm buildThe desktop package also includes release scripts:
pnpm build:release:winpnpm build:release:linuxpnpm build:release:linux:containerpnpm release
Notes:
pnpm buildrunselectron-vite buildand then packages the app with Electron Builder for Windows- Linux container builds require Docker and
GITHUB_TOKEN - release publishing targets GitHub releases for the
Elyspio/media-toolsrepository
On first launch the app creates a local config file under the user app-data folder, typically:
- Windows:
%LOCALAPPDATA%\elytools\config\config.json - macOS:
~/Library/Application Support/elytools/config/config.json
The settings UI exposes these main values:
- Home Assistant URL
- backend API URL
- screen-share hub URL
- qBittorrent API base URL
- OIDC issuer URL, client ID, scopes, and redirect path
The OIDC redirect scheme used by the app is elytools://....
The web code lives under web/.
The backend is an ASP.NET Core application in web/back/.
GET /api/typesfor client type generation- SignalR hub at
/ws/screen-share - Swagger UI in development
- .NET SDK 10.0
- MongoDB
- Redis
OpenWeatherMap_ApiKeyenvironment variable
Default local settings in appsettings.json point to:
- API on
https://localhost:4000 - MongoDB on
mongodb://root:root@localhost:6003/... - Redis on
localhost:6379 - authentication service on
http://localhost:4001
cd web/back dotnet restore dotnet run --project Web/Elytools.Api.Web.csprojcd web/back dotnet test Tests/Elytools.Api.Tests.Weather/Elytools.Api.Tests.Weather.csprojThe frontend is a React + Vite application in web/front/.
It currently includes:
- authentication flow wiring
- theme switching
- a screen-share viewer backed by the SignalR hub
- generated REST clients for the backend and auth service
- Node.js
- pnpm 10
- backend running on
http://localhost:4000or regenerated clients - authentication service running on
http://localhost:4001
cd web/front pnpm install pnpm startUseful scripts:
pnpm buildbuilds the frontendpnpm refresh-clientsregenerates the backend client from the local Swagger documentpnpm dockerruns the Docker deployment build script
If you regenerate clients, make sure the backend Swagger document is reachable at http://localhost:4000/swagger/Elytools.Api/swagger.json. The current script uses HTTP explicitly, so adjust it if your local backend only serves HTTPS.
web/deploy/contains Docker build assets for the web stack- the current deployment script assumes access to a private SSH target and is not generic out of the box
- the desktop app is configured to publish packaged releases to GitHub
If you only want the main application:
- Go to
desktop/. - Run
pnpm install. - Run
pnpm dev. - Open the settings panel and fill in your own service endpoints.