Platform
Exa Platform
Exa will build a social platform with livestreaming capabilities, along with messaging, pictures, and video functionality
4 portions:
Livestreams
Videos
Pictures
Messages
Programming Languages
Frontend: Dart + Flutter
Backend: Golang
Database: Firebase
Hosting Server: Heroku
Livestreams
Similar to Tiktok live, Twitch, and Kick
The default screen layout will be 30% video camera, 40% content, and 30% chat
The streamer has the option to not turn on their camera which would change the screen layout to 70% content, 30% chat (at the bottom)
User Authentication
Implement user registration and authentication using Firebase
Email based account creation
Video Streaming
Video ingest — take RTMP video in, and then transport it to the transcode system
Transcode system — take the incoming RTMP stream from the broadcaster, and transcode it into multiple HLS streams. This is implemented via a combination of C/C++, and Go
Distribution and Edge — Distribute the HLS streams to geographically disparate points of presences, such that you have the highest quality video streaming experience. Again, mostly written in Go
Recording for clips & highlights
VODs to rewatch or reuse stream content
No viewcount
Show viewer list to streamer only
Chat Functionality
Edge — Receives and distribute messages between clients and backend services. Edge speaks the IRC protocol over both raw TCP and WebSockets
Pubsub — Distributes messages internally across Edge nodes. Pubsub and Edge combine to form a hierarchical message distribution system which executes massive fanout
Room — Responsible for the viewer list. Room aggregates, stores, and queries membership data across all our edges to retrieve viewer lists for each channel’s chat room. Allow users to join chat rooms, send messages, interact with other viewers, and @anyone in the viewer list
Chat will be have its own portion on the entire bottom
User Profiles and Web APIs
Web APIs that allow users to create profiles, customize their profiles, view their streaming history, and follow other users
Search and Discovery services that help users to find relevant streams
Web and Client Applications:
Mobile first approach: native apps for the major mobile and tablet platforms such as iOS and Android (ertical mode similar to TikTok live)
Desktop application: horizontal mode
Notifications: Mobile and desktop notifications for viewers after downloading the app
Mobile and email notifications for livestreams and stream title or category changes
AI chat bot occasionally sending pick up lines, comments, emojis to keep the chat engaging
Slideshow feature for switching between streams in the spotlight
Scroll through livestreams like Twitch
Testing
Thoroughly test your application on different devices and browsers to ensure compatibility and performance
Test the video streaming functionality under various network conditions
Deployment
Deploy your backend server and database to a hosting platform Heroku
Deploy your mobile or web app to app stores or hosting platforms
Continuous Improvement
Collect user feedback and iterate on your app to improve its features, performance, and user experience
Data Science Infrastructure
Streaming aggregators to summarize watchtime metrics in near real-time for broadcasters
Badges based on watch time
Firebase database
Navigation Bar
Bottom of the screen has the navigation bar
Featured (default/home page for everyone)
Following (max 5, can unlock more)
Explore?Categories? naming TBD (will not create until later)
Search (will not create until later)
Profile page
Home Page
Home page showing Exa stream, symbol's streams and featured streams
Following Page
List of people that the user has followed vertically shown one by one like Kick. Needs to be scrollable, and clicking on username will navigate to their profile or livestream
Separate the top list for people live, and the bottom list for people offline
automatically get mobile notifications from all following
maximum number of streams to follow: 5-10
Get data from firebase backend
User Profile page
Profile picture
Centered with text @username underneath profile pic (font size 12 or 14)
Short bio under that (font size 10 or 12 depending upon the size you use for the username, no more than 2 lines long)
Go Live button
Features
Subscriptions
Badges
Emotes
Donations
Feed - short videos, pictures, messages
Build second
Show the best short videos
Discovery
AI/Math algorithm
Personal profile
Send break videos if on too long
Autoscroll
Last updated