Description
Marine Snow is a vertical social network + music streaming platform for music connoisseurs. It allows discovering indie music not through track lists and playlists, but in a game-like manner with content unlocking (both music and social network elements (posts like on reddit, audio chat rooms)). Subscriptions have access to the app, in-app activity unlocks content.
Project Background
- Marine Snow founder had a lot of features in mind for his iOS mobile application to implement. Client’s team was composed of a CTO, 2 part-time back-end engineers, a designer and a product owner all working part-time.
- The team was eager to experiment with the app's functionality to find the best way of engaging users with an emphasis on gamification.
- Initially, the client was trying to implement an audio communication feature that would allow users to create and/or enter an audio room, record audio messages, upload them, and listen to messages that other users have recorded. The UI should have responded in real-time as new users interacted within the room — entering or leaving it, creating or deleting messages, etc. Users should have been able to record and listen to audio messages whenever they choose.
Objectives
- Create new infrastructure to handle audio rooms and large quantities of users
- Implement functionality that allows recording of and listening to audio messages
- Implement UX for iOS App according to product documents and design specs
- Test different UI solutions for better user experience
- Implement gamification features with rich audiovisual component to increase user engagement with the app
- Integrate in-app analytics to understand user behavior
Tech Stack
React Native + native Swift modules + Unity for game-dev elements only for iOS, Python + Django, AWS, Jenkins, Terraform, Kubernetes, Grafana, Mixpannel for Analytics
Key features
- Implemented many features from scratch:
- Reddit-like in-app user posts tab
- Round Table
- Achievements Page
- Ecosystem
- Comments
- New Profiles
- Native iOS player integration
- Profound UI solutions:
- Advance animations
- App Redesign
- Custom views similar to apple watch dashboard
- Gamification features for:
- Integrate in-app analytics
- Setup of Project Infrastructure
- Subnets with Internet Gateways for security and stability
- Load Balancer Application
- WireGuard VPN tunnel
- Jenkins - CI/CD
- Terraform - “Infrastructure as code”
- Grafana for application metrics monitoring
Key Solutions
- Implemented many features from scratch
- Reddit-like in-app user posts tab
- Round Table - FIFO-like audio messages chat rooms themed by topic. We used SendBird for chat.
- Achievements Page - Freeform-like Canvas feature to promote user’s in-app achievements (Orbs) in front of other users
- Ecosystem - dynamic leaderboard page with Marquee of the most active users
- Comments feature for posts and music with preview of Reddit links
- Re-invented Profile feature by adding avatars collection, added musical compositions and adding possibility to review other Profiles
- Native iOS player integration, that also allowed to use the app in the lock mode
- Profound UI solutions:
- Advance animations based on React Native reanimate library for Round Table and Canvas features
- Many rounds of redesign campaigns of the app
- Developed custom views similar to apple watch dashboard and animated backgrounds with native iOS code.
- Gamification features for:
- Home Page in Advent calendar style with musical rewards and user levels
- Rewards system for comments, posts creation, likes, and adding music
- Integrate in-app analytics to understand user behavior:
- We’ve integrated Mixpannel to understand how user behaves in application, collecting metrics and testing hypothesis
- Setup of project infrastructure:
- Our DevOps has set up 8 subnets (4 for production and 4 for development - each set of 2 public + 2 private) with Internet Gateways (to communicate with the internet) for project servers to improve fault tolerance and security of the infrastructure.
- We’ve set up a Load Balancer Application to increase servers survivability and availability that also monitors the health of its registered targets and ensures that it routes traffic only to healthy targets.
- To control inbound and outbound traffic this infrastructure uses security groups.
- WireGuard VPN is used as a VPN tunnel to get into the internal network of project infrastructure including Amazon RDS database.
- To provide continuous integration functionality and remove human participation in many tasks we’ve used Jenkins for CI/CD and Terraform for the “Infrastructure as code”.
- Kubernetes has been used for contained applications deployment automation, scaling, and coordination in a cluster. We’ve chosen Grafana for application metrics monitoring.
Results
- Marine Snow mobile application released on time with 5-star rating in AppStore
- Stable and secure project infrastructure allows application to handle many simultaneous users
Anytime we've required a new or different resource, they have responded with excellent options very quickly
Max Tamahori, Engineering Lead at Marine Snow