Frontend for displaying data polled from the avior-go project.
Avior features full configuration and monitoring for an avior-go instance. For documentation on avior-go, please confer the avior-go repository
Go to frontend settings and add a client name and the address of the avior-go instance.
avior-go is only designed to work with a private network, as there is no authentication needed to update its configuration and start/stop it.
An instance is reachable via http://network-ip:10000.
You can also add multiple clients with the same name and a different IP, for example:
- Phoenix:
http://10.10.10.1:10000 - Phoenix:
http://172.31.0.246:10000
The best available route will be automatically selected. This enabled you to expose avior-go via your own private VPN.
You can start, pause and stop clients and view its log files
You can configure all available options there. Documentation is available in avior-go. These settings are individual to each client
You can add and remove clients that are eligible for receiving jobs here. Clients
- Priority determines which client will be filled wit jobs first, up to the maximum. After that, the next client will be chosen for new jobs
- Start and end time configure during which times a client can encode files. It does not influence the assignment rules
- Can always receive jobs determines if a client can receive jobs even when it is offline.
Include/Exclude lists
This is a global configuration instance for the LogMatch module and the trimming feature of avior-go.
- Vue 3 + TypeScript,
<script setup>throughout - Vuetify 4 for UI components (Material Design 3)
- Vite for dev server and bundling
- vue-router, file-based via
unplugin-vue-router(routes are just files undersrc/pages) - Express 5 + Mongoose 9 for the API and MongoDB access
This is a single-page app with no server-side rendering. Express serves two
things on the same port: the built static SPA (dist/) and the /api routes.
There are two independent data paths:
- Browser →
/api→ Express → MongoDB. This is the client registry (which avior-go instances exist, their names/addresses/priorities/etc). App code always calls/api/...with a relative path — no base URL is configured anywhere, in dev or in production. - Browser → avior-go daemons, directly. Once the client registry gives
the browser a daemon's LAN address, the browser talks to that daemon
directly (e.g.
http://network-ip:10000) to start/stop jobs, stream logs, etc. Express is never in this path, and nothing proxies it.
pnpm install
pnpm dev:api # Express API on :10009
pnpm dev # Vite dev server, normally :5173Vite proxies /api/* requests to http://localhost:10009 in dev, so the
app-origin /api calls work the same way they do in production. If port
5173 is already taken, Vite will pick the next free port and print which one
it used.
pnpm build # builds the SPA into dist/
node server/index.js # or: pnpm startExpress serves the built dist/ and /api together on a single PORT
(default 10009).
Environment variables:
MONGO_URL— MongoDB connection string. Defaults tomongodb://192.168.178.75:27017/Avior. There is noconfig.jsonfile or volume mount for this anymore — set the environment variable instead.PORT— port Express listens on. Defaults to10009.
VITE_COMMIT_SHA is inlined into the app at build time by Vite (it shows
up in the footer). Setting it as a runtime environment variable on an
already-built dist/ has no effect — it must be set when pnpm build runs.
- Node >= 20.19 (required by Mongoose 9)
- pnpm — this project uses pnpm exclusively; do not use
npm installoryarn.
pnpm lintESLint flat config (eslint.config.js) covering src/**/*.{ts,vue} (Vue 3 +
TypeScript), server/**/*.js (CommonJS Node), and scripts/*.mjs (Node ESM).
This project is available on ghcr.io. Pass your database URL as an environment variable:
docker run --publish=10009:10009 --env MONGO_URL=mongodb://your-url/Avior ghcr.io/spiritreader/avior-nuxt