* Set default theme to light in `ThemeContext` * Update README and environment configuration files for clarity and completeness and to reflect current project status * Update dark theme colour scheme
3.9 KiB
Team 11 - Gander - Live Streaming Platform
Overview and Purpose
Gander is a live streaming platform created as a 3rd year team software project as part of UCC's Computer Science degree. It provides a source of entertainment and a community for users with similar interests. Users can watch live streams from other users, whether gaming or IRL, or broadcast their own content. By clicking the "Go Live" button, a logged-in user is presented with a dashboard where they can set their stream's title, category, and thumbnail. Users watching a live stream can interact with other viewers and the streamer through a live chat. Users can also subscribe to their favourite streamers via the Stripe API on a monthly basis.
Access Control Levels
The platform implements three-tier access control:
-
No Access (Non-authenticated Users)
- View live streams
- Browse available content
-
Regular Access (Authenticated Users)
- All features available to non-authenticated users
- Donate to streamers through Stripe integration
- Interact with streams through comments
- Follow other users
- Become a content creator and start streaming
-
Admin Access
- Full platform management capabilities
- Content moderation tools
- User account management
- System configuration controls
Technical Stack
Frontend
- React with TypeScript for type safety
- Tailwind CSS for styling
- Video.js for stream playback
- Stripe integration for payment processing
Backend
- Python with Flask web framework
- SQLite database for data persistence
- Flask-Session for user session management
- Nginx RTMP module for stream handling
Infrastructure
- Docker for containerization and deployment
- Docker Compose for multi-container orchestration
- Nginx for reverse proxy and RTMP streaming server
- Microservices architecture
Development
This project was maintained on GitHub, with all team members contributing through version control. The team followed collaborative development practices including regular code reviews and feature branches.
Future Development
Development on Gander has concluded. Potential extensions that were not implemented include:
- User Profiles: Customizable profiles showcasing streaming history, followers, and personal information.
- Enhanced Chat Features: Emojis, chat moderation tools, and the ability to pin messages during live streams.
- Mobile Application: A mobile app built with React Native to allow users to watch and stream on the go.
- Monetization Options: Additional revenue streams for content creators, such as merchandise sales or one-time donations.
- Analytics Dashboard: A dashboard for streamers to track viewership, engagement metrics, and revenue over time.
Running the Project
Pre-requisites:
- Docker (includes Docker Compose)
- Node.js & npm (optional, for local frontend development)
Steps:
-
Rename the following
.env.examplefiles to.envand fill in the required values:frontend/.env.example— React frontend variablesweb_server/.env.example— Flask backend variables
-
Start all services with Docker Compose:
docker compose up --buildNote: Older versions of Docker use
docker-compose(with a hyphen) instead ofdocker compose(with a space). -
Access the frontend at
localhost:8080in your browser. Note that the terminal output from Vite will showlocalhost:5173— this is the internal container port. Nginx exposes the application on port8080.