A modern web application for managing and distributing OTT (Over-The-Top) streaming service accounts and cookies. Built with Flask and Supabase for scalable account management.
- π¬ Service Management: Add and manage multiple OTT streaming services
- π Account Distribution: Support for both credential-based accounts and cookie data
- π¨ Custom Branding: Upload custom icons and set colors for each service
- π± Responsive Design: Mobile-friendly interface with dark/light theme support
- π¨βπΌ Admin Dashboard: Comprehensive admin panel for service management
- βοΈ Per-Service Settings: Customize field labels for each service individually
- π New Account Notifications: Visual indicators for newly added accounts
- π Account Analytics: Track account counts and types per service
- Backend: Flask (Python)
- Database: Supabase (PostgreSQL)
- Storage: Supabase Storage for icon uploads
- Frontend: HTML5, CSS3, JavaScript (Vanilla)
- Styling: Custom CSS with CSS Variables for theming
- Python 3.8 or higher
- Supabase account and project
- Modern web browser
-- All credit goes to Replit and ChatGPTπ
-
Clone the repository
git clone https://github.com/walterwhite-69/StreamBase.git cd streambase -
Install dependencies
pip install -r requirements.txt
-
Environment Configuration
- Copy
.env.templateto.env - Update the environment variables with your Supabase credentials:
cp .env.template .env
- Copy
-
Database Setup
Create the following tables in your Supabase database:
Services Table:
CREATE TABLE services ( id BIGSERIAL PRIMARY KEY, name TEXT NOT NULL, comments TEXT, account_type TEXT DEFAULT 'credentials', icon_class TEXT, icon_url TEXT, color TEXT, accounts JSONB DEFAULT '[]', has_new_accounts BOOLEAN DEFAULT false, created_at TIMESTAMPTZ DEFAULT NOW(), updated_at TIMESTAMPTZ DEFAULT NOW() );
Service Settings Table:
CREATE TABLE service_settings ( id BIGSERIAL PRIMARY KEY, service_id BIGINT REFERENCES services(id) ON DELETE CASCADE, settings JSONB DEFAULT '{}', created_at TIMESTAMPTZ DEFAULT NOW(), updated_at TIMESTAMPTZ DEFAULT NOW() );
Global Settings Table:
CREATE TABLE settings ( id BIGSERIAL PRIMARY KEY, key TEXT UNIQUE NOT NULL, value JSONB DEFAULT '{}', created_at TIMESTAMPTZ DEFAULT NOW(), updated_at TIMESTAMPTZ DEFAULT NOW() ); INSERT INTO settings (key, value) VALUES ( 'global', '{"placeholders": {"user": "User", "pass": "Pass", "expiry": "Expiry", "additional": "Additional"}}' );
Storage Bucket:
- Create a storage bucket named
service-iconsin your Supabase project - Set the bucket to public access for icon display
- Create a storage bucket named
-
Start the application
python app.py
-
Access the application
- Public interface:
http://localhost:5000 - Admin dashboard:
http://localhost:5000/admin
- Public interface:
-
Admin Setup
- Use the email configured in your
.envfile to access the admin dashboard - Default template email:
admin@access.com
- Use the email configured in your
| Variable | Description | Required |
|---|---|---|
SUPABASE_URL |
Your Supabase project URL | Yes |
SUPABASE_ANON_KEY |
Your Supabase anonymous key | Yes |
SESSION_SECRET |
Secret key for Flask sessions | Yes |
ADMIN_EMAIL |
Email address for admin access | Yes |
Services support two account types:
- Credentials: Traditional username/password accounts
- Cookies: Browser cookie data for authenticated sessions
Each service can have customized field labels through the admin settings:
- Username/Email field label
- Password field label
- Expiry field label
- Additional field label
streambase/
βββ app.py # Main Flask application
βββ .env # Environment variables (not in repo)
βββ .env.template # Environment template
βββ requirements.txt # Python dependencies
βββ static/ # Static assets
β βββ css/style.css # Main stylesheet
β βββ js/main.js # JavaScript functionality
β βββ walter-white.gif # Static assets
βββ templates/ # Jinja2 templates
β βββ base.html # Base template
β βββ index.html # Homepage
β βββ service.html # Service detail page
β βββ admin_login.html # Admin login
β βββ admin_dashboard.html # Admin dashboard
β βββ admin_service_form.html # Service creation/editing
β βββ admin_service_settings.html # Service settings
βββ README.md # This file
- Browse available OTT services
- View account counts and types
- Access accounts/cookies with one-click selection
- Responsive design with theme toggle
- Add/edit/delete services
- Upload custom service icons
- Configure service colors and branding
- Manage account data (credentials or cookies)
- Per-service settings configuration
- Account status management
- Session-based admin authentication
- Environment variable configuration
- Secure file upload handling
- Input validation and sanitization
- Chrome 80+
- Firefox 75+
- Safari 13+
- Edge 80+
-- Discord : @heisenburger_7 -- Kiny send me message if you encounter any bugs or any problems
- Fork the repository
- Create a feature branch (
git checkout -b feature/new-feature) - Commit your changes (
git commit -am 'Add new feature') - Push to the branch (
git push origin feature/new-feature) - Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions, please open an issue in the GitHub repository.