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.
- User Profile
- Search for followers, follow and unfollow functionality
- View the list of active video streams
- Broadcasting videos to subscribers and receiving reactions
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
- iOS developer Vitalii Pryidun
- Backend developer Ihor Kopaniev
- DevOps support Vasily Lebediev
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.