VIO is a self-hosted video library server. Think of it as a Navidrome for video media.
It currently focuses on library indexing, metadata modeling, and filesystem correctness, not playback or transcoding.
- Early development
- Backend scanning is functional
- API is unstable
- UI not implemented yet
- Incremental filesystem scanning
- Missing media detection
- Series / season / episode modeling
- SQLite backend
- Transcoding
- User management
- Streaming UI
- Go 1.22+
- Clone the repository
go build ./...go build ./cmd/server./server
The API will be available at: http://localhost:8080
Core data invariants, lifecycle rules, and API stability guarantees are documented in:
docs/architecture.md
These rules define what must never break in VIO.
Tests live inside /tests folder. This contains both API and unit tests. API tests are written using Bruno, while unit tests are written using Go's built-in testing framework.
This project is currently being developed using a mix between traditional programming and AI-assisted development (ChatGPT). I work in QA and do not have a formal background in backend or functional programming, so this project is as much about learning as it is about building something useful, with a strong focus on correctness, edge cases, and repeatable testing.
Developed using Zed