StreamFlow IPTV - Quick Reference
🚀 Quick Start Commands
# Start the application
./start.sh
# or
docker-compose up -d
# Stop the application
./stop.sh
# or
docker-compose down
# View logs
docker-compose logs -f
# Restart
docker-compose restart
# Rebuild
docker-compose build --no-cache
🌐 URLs
🔑 Default Configuration
| Setting |
Value |
| Port |
12345 |
| Database |
SQLite (/app/data/streamflow.db) |
| User |
appuser (UID 1001) |
| Max Upload |
50MB |
| JWT Expiry |
7 days |
📡 API Endpoints
Authentication
POST /api/auth/register # Register new user
POST /api/auth/login # Login
GET /api/auth/verify # Verify token
Playlists
GET /api/playlists # List playlists
POST /api/playlists/url # Add from URL
POST /api/playlists/upload # Upload M3U
DELETE /api/playlists/:id # Delete
PATCH /api/playlists/:id # Rename
POST /api/playlists/bulk-delete # Bulk delete
Channels
GET /api/channels # List channels
GET /api/channels/groups # List groups
🔧 Environment Variables
# Required
PORT=12345
JWT_SECRET=your_secret_here
SESSION_SECRET=your_secret_here
# Optional
NODE_ENV=production
MAX_RECORDING_SIZE=10GB
EPG_UPDATE_INTERVAL=3600000
LOG_LEVEL=info
🐳 Docker Commands
# Build
docker-compose build
# Start (detached)
docker-compose up -d
# Start (foreground)
docker-compose up
# Stop
docker-compose down
# Stop and remove volumes
docker-compose down -v
# View logs
docker-compose logs -f streamflow
# Execute command in container
docker-compose exec streamflow sh
# List running containers
docker-compose ps
# Restart specific service
docker-compose restart streamflow
📦 NPM Scripts
# Root scripts
npm start # Start application
npm run install:all # Install all dependencies
npm run docker:build # Build Docker image
npm run docker:up # Start containers
npm run docker:down # Stop containers
npm run docker:logs # View logs
# Backend scripts (cd backend)
npm install # Install dependencies
npm start # Start server
npm run dev # Start with nodemon
# Frontend scripts (cd frontend)
npm install # Install dependencies
npm run dev # Start dev server (port 3000)
npm run build # Build for production
npm run preview # Preview production build
🗃️ Database Tables
users - User accounts
profiles - User profiles
playlists - M3U playlists
channels - TV channels
custom_groups - User groups
group_channels - Group assignments
epg_data - EPG information
epg_sources - EPG sources
recordings - Recording data
watch_history - View history
favorites - Favorite channels
settings - User settings
api_tokens - API tokens
logo_cache - Logo cache
🌍 Languages
| Code |
Language |
Flag |
| en |
English |
🇬🇧 |
| ro |
Română |
🇷🇴 |
🎨 Theme
- Light Theme: Default
- Dark Theme: Toggle in Settings
- Auto-save: Theme preference persisted
📁 File Locations
/app/data/ # Persistent data
├── streamflow.db # Database
├── playlists/ # Uploaded playlists
├── recordings/ # Recorded content
├── logos/ # Channel logos
├── epg/ # EPG cache
└── uploads/ # User uploads
/app/logs/ # Application logs
├── error.log # Error logs
└── combined.log # All logs
🔒 Security Features
- ✅ Non-root container user (UID 1001)
- ✅ JWT authentication (7-day expiry)
- ✅ Bcrypt password hashing (10 rounds)
- ✅ Rate limiting (5 login attempts/15min)
- ✅ Helmet security headers
- ✅ Input validation
- ✅ CORS protection
- ✅ No privilege escalation
- ✅ Capability dropping
- ✅ Health checks
🐛 Troubleshooting
Container won't start
docker-compose logs
Port already in use
# Edit docker-compose.yml, change:
ports:
- "8080:12345" # Change 8080 to free port
Permission denied
# Fix permissions
sudo chown -R 1001:1001 ./data ./logs
Reset database
# WARNING: Deletes all data
docker-compose down -v
docker-compose up -d
Can't connect
# Check if running
docker-compose ps
# Check logs
docker-compose logs -f
# Test health
curl http://localhost:12345/api/health
📊 Monitoring
# View container stats
docker stats streamflow-app
# Check health status
docker inspect --format='{{.State.Health.Status}}' streamflow-app
# View recent logs
docker-compose logs --tail=100 streamflow
🔄 Backup & Restore
Backup
# Backup data volume
docker run --rm \
-v streamflow-data:/data \
-v $(pwd)/backup:/backup \
alpine tar czf /backup/backup-$(date +%Y%m%d).tar.gz /data
Restore
# Restore data volume
docker run --rm \
-v streamflow-data:/data \
-v $(pwd)/backup:/backup \
alpine tar xzf /backup/backup-YYYYMMDD.tar.gz -C /
🎯 Features Quick Access
| Feature |
Page/Location |
| Watch Live TV |
Dashboard → Live TV |
| Listen Radio |
Dashboard → Radio |
| Add Playlist |
Settings or Sidebar |
| Schedule Recording |
Channel → Record button |
| Change Theme |
Settings → Theme toggle |
| Change Language |
Settings → Language dropdown |
| View Favorites |
Dashboard → Favorites |
| Manage Profiles |
Settings → Profiles |
📱 Supported Features
- ✅ Live TV streaming
- ✅ Radio streaming
- ✅ EPG (Electronic Program Guide)
- ✅ Recording (scheduled & manual)
- ✅ Picture-in-Picture (PiP)
- ✅ Multi-device sync
- ✅ User profiles
- ✅ Favorites
- ✅ Custom groups
- ✅ Watch history
- ✅ Multi-language (EN/RO)
- ✅ Light/Dark themes
- ✅ Responsive design
🔗 Useful Links
- Project root:
/home/iulian/projects/tv
- Documentation:
README.md, SETUP.md, ARCHITECTURE.md
- Issue tracker: Contact development team
- Health check: http://localhost:12345/api/health
Version: 1.0.0
Last Updated: December 2025