Picchar is a lightweight,self-hosted broadcast-style video platform where the host has complete control over video playback while viewers watch in sync.
- π₯ 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
- Docker and Docker Compose
- Ngrok Account (free tier works)
- Clone the repository
git clone https://github.com/souravsuvarna/Picchar.git cd picchar - Copy the environment template:
cp .env.example .env
- Edit .env with your credentials:
HOST_USER - <username> HOST_PASSWORD - <password> NGROK_AUTHTOKEN - Your Ngrok token (required)
docker-compose up -dLocal: http://localhost:8080# 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-
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
-
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
-
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
- Java 17+
- Maven 3.6+
# Build the application
mvn clean packagemvn spring-boot:runUsername: admin
Password: pass123src/
βββ main/
β βββ java/com/picchar/
β β βββ component/
β β βββ config/
β β βββ controller/
β β βββ service/
β β βββ dto/
β βββ resources/
β βββ application.properties
β βββ static/ # Frontend assets
docker-compose.yml
Dockerfile
.env.example We welcome contributions! Hereβs how you can help improve the project.
- Modern UI/UX improvements
- Responsive design
- Enhanced video player interface
- Access KeyβProtected Rooms
- API enhancements
- API documentation
- Deployment guides
- User guides
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m "Add some amazing feature" - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request to
main
- Follow Spring Boot best practices
- Update documentation where applicable
- Use clear and meaningful commit messages
- Free tunnels may disconnect unexpectedly
- Manual restart required if the tunnel drops
- No automatic reconnection logic
- Large video files consume significant memory
- No streaming optimization
- Risk of out-of-memory errors with high concurrency
- Basic authentication only
- No rate limiting
- Limited input validation beyond Spring defaults
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.