Skip to content

Picchar is a lightweight,self-hosted broadcast-style video platform where the host has complete control over video playback while viewers watch in sync.

Notifications You must be signed in to change notification settings

souravsuvarna/Picchar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

25 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 Picchar - Self-Hosted Video Streaming Platform

Java Spring Boot Maven Docker Ngrok

Picchar is a lightweight,self-hosted broadcast-style video platform where the host has complete control over video playback while viewers watch in sync.

✨ Features

  • πŸŽ₯ Video Upload & Streaming: Upload videos up to 500MB and stream them
  • πŸ”— Instant Public Links: Automatically generates shareable Ngrok URLs
  • πŸ’¬ Live Chat (Planned): Real-time chat for viewers (see Todo list)
  • 🏠 Self-Hosted: Full control over your data and infrastructure
  • 🐳 Docker Containerized: One-command deployment
  • πŸ” Basic Host Authentication: Admin access control
  • πŸ“± No Database Required: Simple file-based storage

πŸš€ Quick Start

Prerequisites

Installation

  1. Clone the repository
    git clone https://github.com/souravsuvarna/Picchar.git
    cd picchar
  2. Copy the environment template:
    cp .env.example .env
  3. Edit .env with your credentials:
    HOST_USER - <username>
    HOST_PASSWORD - <password>
    NGROK_AUTHTOKEN - Your Ngrok token (required)

Start the Application

docker-compose up -d

Access

Local: http://localhost:8080

Management Commands

# Start
docker-compose up -d

# Stop
docker-compose down

# View logs
docker-compose logs -f

# Restart
docker-compose restart

# Rebuild image
docker-compose up -d --build

Current Limitations & Roadmap

🚨 Limitations

  • No User Authentication

    • Only host/admin auth
    • No user tracking, logs, or management
  • Ngrok (Free Tier)

    • Tunnels expire after 2–3 hours
    • Limited bandwidth & connections
    • No custom domains
  • Storage & Performance

    • Max file size: 500MB
    • No transcoding or compression
    • No CDN, single-server setup

πŸ“‹ Todo / Roadmap

πŸ”₯ High Priority

  • Access Key–Protected Rooms

    • Each room is secured with a host-defined access key
    • Viewers must enter the key to participate
  • Ngrok Improvements

    • Auto-reconnect tunnels
    • Multi-tunnel support
    • Custom subdomains

🎯 Medium Priority

  • Live Chat

    • Real-time WebSocket-based chat
    • Anonymous or user-based chatting
    • Chat moderation tools
    • Emoji and basic formatting support
  • Admin Dashboard

    • Usage stats
    • User & system monitoring

πŸ› οΈ Development

Prerequisites

  • Java 17+
  • Maven 3.6+

Build from Source

# Build the application
mvn clean package

Run the Application

mvn spring-boot:run

Default Credentials

Username: admin
Password: pass123

Project Structure

src/
β”œβ”€β”€ main/
β”‚   β”œβ”€β”€ java/com/picchar/
β”‚   β”‚   β”œβ”€β”€ component/       
β”‚   β”‚   β”œβ”€β”€ config/          
β”‚   β”‚   β”œβ”€β”€ controller/      
β”‚   β”‚   β”œβ”€β”€ service/         
β”‚   β”‚   └── dto/           
β”‚   └── resources/
β”‚       β”œβ”€β”€ application.properties
β”‚       └── static/          # Frontend assets
docker-compose.yml          
Dockerfile                  
.env.example               

🀝 Contributing

We welcome contributions! Here’s how you can help improve the project.

Areas Needing Contribution

Frontend Development

  • Modern UI/UX improvements
  • Responsive design
  • Enhanced video player interface

Backend Features

  • Access Key–Protected Rooms

Ngrok Improvements

  • API enhancements

Documentation

  • API documentation
  • Deployment guides
  • User guides

Contribution Process

  1. Fork the repository
  2. Create a feature branch
       git checkout -b feature/amazing-feature
  3. Commit your changes
    git commit -m "Add some amazing feature"
  4. Push to the branch
    git push origin feature/amazing-feature
  5. Open a Pull Request to main

Coding Standards

  • Follow Spring Boot best practices
  • Update documentation where applicable
  • Use clear and meaningful commit messages

πŸ› Known Issues

Ngrok Tunnel Stability

  • Free tunnels may disconnect unexpectedly
  • Manual restart required if the tunnel drops
  • No automatic reconnection logic

Memory Usage

  • Large video files consume significant memory
  • No streaming optimization
  • Risk of out-of-memory errors with high concurrency

Security Considerations

  • Basic authentication only
  • No rate limiting
  • Limited input validation beyond Spring defaults

License

MIT License

Copyright (c) 2025 Sourav Suvarna

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

About

Picchar is a lightweight,self-hosted broadcast-style video platform where the host has complete control over video playback while viewers watch in sync.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors