Skip to content

Repository files navigation

SOYO - Stream On Your Own

What is SOYO?

SOYO is a Next.js web application designed to display and stream video files stored on local drives across your local network. It allows you to browse, search, and watch your media collection from any device without requiring a central cloud server.
Wanted to watch animes on phone but low on storage , so proceeded to spend hours in this

Technical Details

Framework: Next.js
Styling: Tailwind CSS

Features

  • Displays video files from configured local media directories across all devices on the local network.
  • Automatic zero-configuration Docker volume discovery for mounted media folders.
  • Live online torrent and magnet streaming via WebTorrent with HTTP range-request support.
  • In-app verified torrent search engine with seeds/leeches counts, resolution tags, and 1-click magnet streaming.
  • Local user profiles with custom avatar uploads and per-profile watch progress tracking.
  • Intelligent scene filename parsing for clean movie titles, release year, resolution (1080p, 720p, 4K), and source badges.
  • Curated media rails for Trending, Most Watched, and Recently Added titles with settings toggles.
  • Fetches anime thumbnails from AniList API and movie posters from OMDb API with local thumbnail fallbacks.
  • Hardware-accelerated 3D magnetic parallax UI with customizable theme accents.

Screenshots

Laptop view Mobile view Mobile view Laptop view

Run using Docker

DockerHub Image

docker pull fal3n4ngel/soyo

Prerequisites

  • Docker Desktop installed
  • Sufficient permissions to run Docker
  • Access to local video directories
Custom Building

Install Docker Desktop:

  • Windows/Mac: Download from Docker's official website
  • Linux: Use package manager or follow the official Docker CE installation guides

Build Docker Image


docker build -t soyo .  
docker build -t soyo:v1.0 . # build with specific tag

Run Docker Container

# Basic run 
docker run -d -p 3000:3000 --volume=F:/:/Movies --volume=G:/:/Anime --name soyo fal3n4ngel/soyo:latest

# Run with auto-restart policy
docker run -d --restart=unless-stopped -p 3000:3000 --volume=F:\:/Movies --volume=G:\:/Anime --name soyo fal3n4ngel/soyo:latest

Access the Website:

Open your browser and navigate to

http://{ip}:3000

Run Using Node.js

Clone the Repository:

git clone https://github.com/fal3n-4ngel/SOYO.git
cd SOYO

Install Dependencies:

npm install

Run the Development Server:

npm run dev

Run the Production Server:

npm run build
npm run start

Access the Website:

Open your browser and navigate to

http://{ip}:3000   # if Development Server
http://{ip}:3000   # if Production Server

to view the website.

Troubleshooting

1. Volume Mounting Issues

  • Symptoms

    • Videos not displaying
    • Incorrect directory access
    • Permission-related errors
  • Troubleshooting Steps

    # verify the external / needed drives are mounted
    # restart the wsl ( within docker desktop )

Contributors

Jes-ny
Adithya Krishnan

License

This project is open-source and available under the MIT License.

Interested in improving Soyo? I welcome contributions! Feel free to open issues, submit pull requests, or share your ideas on GitHub. Together, we can make this project even better.

About

SOYO - Stream Own Your Own || Effortlessly stream files from your local system via local network and enjoy your personal collection anywhere in your home.

Topics

Resources

Stars

152 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages