Video Streaming App Proof of Concept

The backstory

Mobile applications with video streaming have become a valid alternative to offline meetings. In addition, social media applications, doctor-on-demand projects, and virtual events software also apply video streaming functionality. 

At The APP Solutions, we often receive requests from potential clients for video streaming app development. Clients, who consider The APP Solutions as a tech partner, are looking for evidence that we have expertise in video streaming and social media app development. 

We decided to build a proof of concept of a video streaming application to ensure the ownership of the tech expertise. We also gave a detailed description of the overall architecture, feature list, and technologies we applied. 

What is a Proof of Concept (POC)? 

A proof of concept (POC) is an early product version between the design and main development phases. POC has become a common way for startups and established businesses to test whether the idea they have is actually going to work since POC demonstrates that the project can be done. A proof of concept also creates a starting point for the development of the project as a whole.

Businesses need a proof of concept when there is no guarantee that the technical result is achievable due to the leverage of complex architecture and new technologies, what's relevant to video streaming mobile applications. Thus, by developing a POC, developers, and stakeholders get evidence that the project is viable.

Our challenge

Develop the proof of concept of a video streaming application with the basic functionality of a social media application. To achieve this goal, we needed to: 

Implement the following mobile screens and use cases: 

  • Sign up / Sign in. Users can sign up/sign in to the system.
  • View profile. Users can view their and other users’ profile data. 
  • Edit profile. Users can edit their profile data, such as name, avatar, and bio. 
  • Search. Users can search for other users by name and follow them. 
  • Start streaming.  Users can start real-time video streaming.
  • View streamings list. Users can view the list of active streams. 
  • Join the stream. Users can participate in the streaming of another user as a viewer. 

Integrate several authorization methods, such as: 

  • Email and Password
  • Google authorization
  • Facebook authorization
  • Apple authorization

Our Solution - Video Streaming App Proof of Concept  

We developed a proof of concept of a video streaming application with the basic functionality of a social media app to show off our tech expertise in live broadcasting and demonstrate how such a project may look. 

Implemented features:

  • Sign-in/Sign-up via email and password, Facebook, Google, and Apple ID.  

video streaming app proof of concept

  • User Profile 

video streaming app poc development

  • Search for followers, follow and unfollow functionality 

video streaming app poc development

  • View the list of active video streams 

poc video streaming social media network

  • Broadcasting videos to subscribers and receiving reactions 

social media app with video streaming functionality poc development

High-level Architecture vision 

video streaming app high level architecture vision

Tech stack

  • Swift for iOS application
  • Firebase Real-time BD supports direct connectivity from mobile and web platforms as well as backend applications
  • Firebase for user authentication and authorization, data and image storing
  • Google Cloud Platform for hosting app’s back-end 
  • Python for application’s back-end 
  • Agora.IO, a SaaS for video broadcasting and participating in video streaming

Contributors

The repository with the POC code is available on the link.

How we developed a Streaming app proof of concept

Core

We built the app's POC using MVP+Router+Configurator architecture, including MVVM+Combine for lists, etc. 

We made DI using ServiceLocator Singleton, which is a factory of abstract services.

Main services 

  • Keychain for saving JWT and Apple sign-in credentials.
  • Network, AuthorizedNetwork, TokenProvider, APIErrorParser for executing network requests. All requests have to conform to APIRequestProtocol or APIAuthorizedRequestProtocol for requests that include a token into headers. 
  • TokenProvider for fetching a token from the keychain and refreshing it via Firebase if needed. If your app has to refresh a token using a backend request, go to Core/Networking/TokenProvider and rewrite this service to restore the token manually. 
  • FirebaseManager for authentication using email+password, verification ID, social media, password reset, logout, etc.
  • FirebaseDatabaseManager for obtaining followers list, fetching users, etc.
  • FirebaseStorage for setting and fetching an avatar.
  • AuthService is just a stub for validating Firebase JWT tokens. If your back-end requires JWT verification, insert a validation request into the validate method.
  • SearchService for fetching users with input from the search field.
  • FollowService for following/unfollowing the user fetched with SearchService.
  • UserService for updating user profile (name etc.).
  • StreamService for fetching a token to join agora channel, notifying back-end about start/end of the channel, subscribing to user reactions, sending reactions, etc.

Our results 

The development of the video streaming app proof of concept gave us the following expertise:

  • We integrated video streaming functionality to the POC using Agora.IO SaaS.
  • We implemented the authentication and authorization by Firebase Authentication.
  • We worked with Firebase Realtime Database, which supports direct connectivity with end-users applications (like mobile, web, etc.) server-side applications.
  • We optimized the development process by applying ready-to-use Firebase functionality.

As a result, we showcased our expertise in video streaming app development. 

Looking for a video app development team?

Contact us

 
Ihor Kopaniev

CTO at The APP Solutions, with niche expertise in AI and ML. https://www.linkedin.com/in/kopaniev/