7.7 KiB
7.7 KiB
StreamFlow IPTV - Project Structure
tv/
├── 📄 README.md # Main documentation
├── 📄 SETUP.md # Installation guide
├── 📄 ARCHITECTURE.md # Architecture overview
├── 📄 package.json # Root package file
├── 📄 .env.example # Environment template
├── 📄 .gitignore # Git ignore rules
├── 📄 .dockerignore # Docker ignore rules
├── 🐳 Dockerfile # Multi-stage Docker build
├── 🐳 docker-compose.yml # Docker Compose config
├── 🚀 start.sh # Start script
├── 🛑 stop.sh # Stop script
│
├── 📁 backend/ # Node.js Backend
│ ├── 📄 package.json # Backend dependencies
│ ├── 🚀 server.js # Main server file
│ ├── 💊 healthcheck.js # Docker health check
│ │
│ ├── 📁 database/ # Database layer
│ │ └── 🗄️ db.js # SQLite setup & schema
│ │
│ ├── 📁 middleware/ # Express middleware
│ │ └── 🔒 auth.js # JWT authentication
│ │
│ ├── 📁 routes/ # API endpoints
│ │ ├── 🔐 auth.js # Authentication routes
│ │ ├── 📺 channels.js # Channel management
│ │ ├── 📋 playlists.js # Playlist management
│ │ ├── 📅 epg.js # EPG data
│ │ ├── ⏺️ recordings.js # Recording system
│ │ ├── 👤 profiles.js # User profiles
│ │ ├── 📻 radio.js # Radio channels
│ │ ├── 📂 groups.js # Custom groups
│ │ ├── ⚙️ settings.js # User settings
│ │ ├── 🎬 stream.js # Stream proxy
│ │ └── 📊 stats.js # Analytics
│ │
│ ├── 📁 jobs/ # Background jobs
│ │ ├── 📡 epgSync.js # EPG synchronization
│ │ ├── 💚 channelHealth.js # Health monitoring
│ │ └── ⏰ recordingScheduler.js # Recording scheduler
│ │
│ └── 📁 utils/ # Utilities
│ ├── 📝 logger.js # Winston logger
│ └── 🔍 m3uParser.js # M3U parser
│
├── 📁 frontend/ # React Frontend
│ ├── 📄 package.json # Frontend dependencies
│ ├── ⚙️ vite.config.js # Vite configuration
│ ├── 📄 index.html # HTML template
│ │
│ ├── 📁 public/ # Static assets
│ │ ├── placeholder-channel.png
│ │ └── placeholder-show.png
│ │
│ └── 📁 src/ # Source code
│ ├── 🎯 main.jsx # Entry point
│ ├── 🎨 App.jsx # Main app component
│ ├── 🌍 i18n.js # Internationalization
│ ├── 🎨 theme.js # MUI themes
│ ├── 💅 index.css # Global styles
│ │
│ ├── 📁 components/ # React components
│ │ ├── 🎬 VideoPlayer.jsx # Video player
│ │ ├── 📺 EPGTimeline.jsx # EPG viewer
│ │ ├── 🏠 Sidebar.jsx # Navigation sidebar
│ │ └── 🔝 Header.jsx # Top header
│ │
│ ├── 📁 pages/ # Page components
│ │ ├── 🔐 Login.jsx # Login page
│ │ ├── 📝 Register.jsx # Registration page
│ │ ├── 📊 Dashboard.jsx # Main dashboard
│ │ ├── 📺 LiveTV.jsx # Live TV page
│ │ ├── 📻 Radio.jsx # Radio page
│ │ ├── 🎬 Movies.jsx # Movies page
│ │ ├── 📺 Series.jsx # Series page
│ │ ├── ⭐ Favorites.jsx # Favorites page
│ │ └── ⚙️ Settings.jsx # Settings page
│ │
│ ├── 📁 store/ # Zustand stores
│ │ ├── 🔐 authStore.js # Auth state
│ │ └── 🎨 themeStore.js # Theme state
│ │
│ ├── 📁 utils/ # Utilities
│ │ └── 🌐 api.js # Axios client
│ │
│ └── 📁 locales/ # Translations
│ ├── 🇬🇧 en.json # English
│ └── 🇷🇴 ro.json # Romanian
│
├── 📁 data/ # Persistent data (Docker volume)
│ ├── 📁 playlists/ # Uploaded playlists
│ ├── 📁 recordings/ # Recorded content
│ ├── 📁 logos/ # Channel logos
│ ├── 📁 epg/ # EPG cache
│ ├── 📁 uploads/ # User uploads
│ └── 🗄️ streamflow.db # SQLite database
│
└── 📁 logs/ # Application logs (Docker volume)
├── 📄 error.log # Error logs
└── 📄 combined.log # All logs
File Count Summary
- Total Files: 52
- Backend Files: 17
- Frontend Files: 25
- Configuration: 7
- Documentation: 3
Key Technologies by Layer
Backend
- Runtime: Node.js 20 (Alpine Linux)
- Framework: Express.js
- Database: SQLite3
- Authentication: JWT + Bcrypt
- Security: Helmet, CORS, Rate Limiting
- Media: FFmpeg, Streamlink
- Jobs: node-cron
- Logging: Winston
Frontend
- Framework: React 18
- Build Tool: Vite
- UI Library: Material-UI (MUI) 5
- Router: React Router 6
- State: Zustand
- HTTP Client: Axios
- i18n: i18next
- Video: React Player
Infrastructure
- Container: Docker (Alpine base)
- Orchestration: Docker Compose
- Volumes: Named volumes for data/logs
- Network: Bridge network
- Health: Automatic health checks
Lines of Code (Approximate)
| Component | Lines |
|---|---|
| Backend Routes | ~800 |
| Database Schema | ~200 |
| Frontend Components | ~1200 |
| Pages | ~800 |
| Configuration | ~400 |
| Total | ~3400 |
Security Features by File
| File | Security Features |
|---|---|
Dockerfile |
Non-root user, capability dropping, minimal base |
docker-compose.yml |
Security opts, resource limits, health checks |
backend/middleware/auth.js |
JWT validation, role-based access |
backend/routes/auth.js |
Bcrypt hashing, rate limiting, input validation |
backend/server.js |
Helmet headers, CORS, compression |
frontend/src/utils/api.js |
Token injection, 401 handling |
Development Workflow
1. 📝 Edit source files
└── backend/ or frontend/src/
2. 🔧 Test locally
└── npm run dev:backend
└── npm run dev:frontend
3. 🏗️ Build Docker image
└── docker-compose build
4. 🚀 Deploy container
└── docker-compose up -d
5. ✅ Verify deployment
└── http://localhost:12345
Production Checklist
- Change JWT_SECRET in .env
- Change SESSION_SECRET in .env
- Set NODE_ENV=production
- Configure SSL/HTTPS (reverse proxy)
- Set up firewall rules
- Configure backup schedule
- Set up monitoring/alerts
- Test all features
- Review logs for errors
- Document custom configurations
Last Updated: December 2025
Version: 1.0.0