/SOYO

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

Primary LanguageTypeScriptMIT LicenseMIT

SOYO - Stream On Your Own

What is SOYO?

SOYO is a Next.js website designed to display video files stored on a local drive (default: F:/). The website is accessible throughout the local network, providing a convenient way to browse and view videos without needing a central 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 all video files from the specified local drive.
  • Accessible across devices on the same local network.
  • User-friendly interface for easy navigation and viewing.
  • Fetches anime thumbnails from AniList API to display cover images for videos (if available).
  • Fallback to local thumbnails if no external thumbnail is found.
  • Ability to fetch movie/poster images from IMDb using OMDb API for non-anime videos.

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 <port>:8311 --volume=F:/:/Movies --volume=G:/:/Anime --name soyo fal3n4ngel/soyo:latest

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

Access the Website:

Open your browser and navigate to

http://{ip}:<port> 

Run Using Node.js

Clone the Repository:

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

Install Dependencies:

npm install

Create or edit config.json

{
  "movieDir": "F:/",
  "thumbnailCache": false,
  "lastAccessedMovie": null
}

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}:8311   # 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. 🌟