**Wibby Server** is a self-hosted personal video media server built for Apple Silicon Macs. It uses a Go backend, SQLite for persistence, and a React web app.
The macOS version is currently stable. Planned platform support will follow in this order:
1. Docker
2. Windows
3. Ubuntu
The broader **Wibby** ecosystem is also in progress, with apps planned for:
- Android TV
- iOS, including iPhone and iPad
- Apple TV
- Android
Apple Vision Pro support may be explored in the future.
# Accepted Media Naming Formats
Wibby scans supported video files recursively inside each library root.
Supported video extensions:
```text
.mkv
.mp4
.m4v
.avi
.mov
.webm
```
Ignored examples:
```text
.DS_Store
Thumbs.db
._filename.mkv
sample.mkv
```
## Movies
Movie libraries accept folder-based names, file-based names, and scene-style names.
### Recommended movie format
```text
Movies/
Movie Name (Year)/
Movie Name (Year).mkv
```
Example:
```text
Movies/
Batman Begins (2005)/
Batman Begins (2005).mp4
```
Parsed as:
```text
Title: Batman Begins
Year: 2005
```
### Movie file directly in the library root
```text
Movies/
Movie Name (Year).mkv
```
Example:
```text
Movies/
Inception (2010).mkv
```
Parsed as:
```text
Title: Inception
Year: 2010
```
### Movie folder with provider ID
```text
Movies/
Movie Name (Year) {tmdb-ID}/
Movie Name (Year) {tmdb-ID}.mkv
```
Example:
```text
Movies/
Batman Begins (2005) {tmdb-272}/
Batman Begins (2005) {tmdb-272}.mp4
```
Parsed as:
```text
Title: Batman Begins
Year: 2005
Provider: tmdb
Provider ID: 272
```
### Scene-style movie filename
```text
Movies/
Movie.Name.Year.Quality.Source.Codec.mkv
```
Example:
```text
Movies/
Inception.2010.1080p.BrRip.x264.YIFY.mp4
```
Parsed as:
```text
Title: Inception
Year: 2010
```
### Movie inside collection folders
```text
Movies/
Collection Name/
Movie Name/
video-file.mkv
```
Example:
```text
Movies/
Marvel/
Iron Man/
video-file.mkv
```
Parsed as:
```text
Title: Iron Man
```
Better:
```text
Movies/
Marvel/
Iron Man (2008)/
Iron Man (2008).mkv
```
Parsed as:
```text
Title: Iron Man
Year: 2008
```
### Loose movie filename fallback
```text
Movies/
Movie Name.mkv
```
Example:
```text
Movies/
Iron Man.mkv
```
Parsed as:
```text
Title: Iron Man
```
No year is detected unless the folder or filename includes one.
### Generic movie folder names
These folder names are treated as generic and are not used as movie titles:
```text
Movies
Movie
Films
Film
```
## TV Series
TV libraries are parsed as episodes.
The scanner accepts this layout:
```text
TV Shows/
Show Name/
Season XX/
episode-file.mkv
```
With the updated parser, it also accepts flat Plex-style show folders:
```text
TV Shows/
Show Name/
episode-file.mkv
```
## TV show folder names
### Show name only
```text
TV Shows/
Show Name/
```
Example:
```text
TV Shows/
Doctor Who/
```
Parsed as:
```text
Show: Doctor Who
```
### Show name with year
```text
TV Shows/
Show Name (Year)/
```
Example:
```text
TV Shows/
Doctor Who (1963)/
```
Parsed as:
```text
Show: Doctor Who
Year: 1963
```
This is recommended when multiple shows share the same name.
### Show name with TMDb ID
```text
TV Shows/
Show Name (Year) {tmdb-ID}/
```
Example:
```text
TV Shows/
The Office (UK) (2001) {tmdb-2996}/
```
Parsed as:
```text
Show: The Office (UK)
Year: 2001
Provider: tmdb
Provider ID: 2996
```
## Season folders
Season folders can use these formats:
```text
Season 01
Season.01
Season_01
Season-01
Season 1
```
Examples:
```text
TV Shows/
Doctor Who (1963)/
Season 25/
```
```text
TV Shows/
The Office (UK) (2001) {tmdb-2996}/
Season 01/
```
## Standard TV episode format
Recommended:
```text
TV Shows/
Show Name (Year)/
Season XX/
Show Name - SXXEYY - Episode Title.mkv
```
Example:
```text
TV Shows/
Doctor Who (1963)/
Season 25/
Doctor Who - S25E02 - The Happiness Patrol (1).mkv
```
Parsed as:
```text
Show: Doctor Who
Year: 1963
Season: 25
Episode: 2
Episode title: The Happiness Patrol (1)
```
## TV episode with show year in filename
```text
TV Shows/
Show Name (Year)/
Season XX/
Show Name (Year) - SXXEYY - Episode Title.mkv
```
Example:
```text
TV Shows/
Doctor Who (1963)/
Season 01/
Doctor Who (1963) - S01E01 - An Unearthly Child (1).mp4
```
Parsed as:
```text
Show: Doctor Who
Year: 1963
Season: 1
Episode: 1
Episode title: An Unearthly Child (1)
```
## Flat Plex-style TV episode format
Accepted with the updated parser:
```text
TV Shows/
Show Name (Year)/
Show Name - SXXEYY - Episode Title.mkv
```
Example:
```text
TV Shows/
Doctor Who (1963)/
Doctor Who - S25E02 (149) - The Happiness Patrol (1).mkv
```
Parsed as:
```text
Show: Doctor Who
Year: 1963
Season: 25
Episode: 2
Episode title: (149) - The Happiness Patrol (1)
```
Cleaner version:
```text
TV Shows/
Doctor Who (1963)/
Doctor Who - S25E02 - The Happiness Patrol (1).mkv
```
Parsed as:
```text
Show: Doctor Who
Year: 1963
Season: 25
Episode: 2
Episode title: The Happiness Patrol (1)
```
## Flat Plex-style TV episode with TMDb show folder
Accepted with the updated parser:
```text
TV Shows/
Show Name (Year) {tmdb-ID}/
Show Name - SXXEYY - Episode Title.mkv
```
Example:
```text
TV Shows/
The Office (UK) (2001) {tmdb-2996}/
The Office (UK) - S01E01 - Downsize.mp4
```
Parsed as:
```text
Show: The Office (UK)
Year: 2001
Provider: tmdb
Provider ID: 2996
Season: 1
Episode: 1
Episode title: Downsize
```
## Episode filename with only SXXEYY
Accepted with the updated parser when the show folder provides the show name:
```text
TV Shows/
Show Name (Year)/
SXXEYY - Episode Title.mkv
```
Example:
```text
TV Shows/
Doctor Who (1963)/
S25E02 - The Happiness Patrol (1).mkv
```
Parsed as:
```text
Show: Doctor Who
Year: 1963
Season: 25
Episode: 2
Episode title: The Happiness Patrol (1)
```
Also accepted inside a season folder:
```text
TV Shows/
Doctor Who (1963)/
Season 25/
S25E02 - The Happiness Patrol (1).mkv
```
## Multi-episode TV filename
Accepted:
```text
TV Shows/
Show Name (Year)/
Season XX/
Show Name - SXXEYY-EZZ - Episode Title.mkv
```
Example:
```text
TV Shows/
Grey's Anatomy (2005)/
Season 02/
Grey's Anatomy (2005) - S02E01-E03.avi
```
Parsed as:
```text
Show: Grey's Anatomy
Year: 2005
Season: 2
Episode: 1
```
Only the first episode number is stored.
## Date-based TV episodes
Accepted:
```text
TV Shows/
Show Name (Year)/
Season XX/
Show Name (Year) - YYYY-MM-DD - Episode Title.mkv
```
Example:
```text
TV Shows/
The Colbert Report (2005)/
Season 08/
The Colbert Report (2005) - 2011-11-15 - Elijah Wood.avi
```
Parsed as:
```text
Show: The Colbert Report
Year: 2005
Season: 8
Air date: 2011-11-15
Episode title: Elijah Wood
```
## Loose TV fallback
If a video file is inside a valid show folder and season folder but the filename does not contain an episode number, Wibby may still accept it as a season item.
Example:
```text
TV Shows/
Show Name (Year)/
Season 01/
random-video-file.mkv
```
Parsed as:
```text
Show: Show Name
Year: Year
Season: 1
Episode: unknown
```
This is accepted, but not recommended.
Better:
```text
TV Shows/
Show Name (Year)/
Season 01/
Show Name - S01E01 - Episode Title.mkv
```
## Generic TV folder names
These folder names are treated as generic and are not used as show names:
```text
TV
TV Show
TV Shows
Shows
Show
Series
Television
Television Shows
```
## Recommended library layout
Movies:
```text
Movies/
Batman Begins (2005)/
Batman Begins (2005).mp4
Inception (2010)/
Inception (2010).mkv
```
TV shows with season folders:
```text
TV Shows/
Doctor Who (1963)/
Season 25/
Doctor Who - S25E01 - Remembrance of the Daleks (1).mkv
Doctor Who - S25E02 - The Happiness Patrol (1).mkv
```
Flat Plex-style TV shows:
```text
TV Shows/
Doctor Who (1963)/
Doctor Who - S25E01 - Remembrance of the Daleks (1).mkv
Doctor Who - S25E02 - The Happiness Patrol (1).mkv
```
TV shows with TMDb hint:
```text
TV Shows/
The Office (UK) (2001) {tmdb-2996}/
Season 01/
The Office (UK) - S01E01 - Downsize.mp4
```