SESH was an app I built in 2020, based on an idea I've had since 2019.
Background
Imagine an app where you would be matched into a group of four people, with similar interests, every week starting Monday. This concept of speed chatting, mixed with Spotify's Discover Weekly sounded like a fun project that I would want to personally use.
Introducing Neural Matching
A new technology, dubbed Neural Matching, was created to facilitate the matching of users into groups.
During the onboarding process, users would choose their interests across categories such as Music, Movies & TV, Video Games, and more. For select interest categories, users could link a third-party service such as Spotify or Letterboxd to automatically import and sync their interests over time.
Based on KNN, a set of services were created to keep an up-to-date model of every active users interests. This was used to refresh all groups on a weekly basis, but also match users into new groups as they signed up.
Infrastructure Design
SESH's backend was built in TypeScript, Go, Python and Elixir. The mix of languages is intentional—TypeScript was chosen for the core monolith that served GraphQL, Go was chosen for critical services that many internal services call such as authentication and internal data querying, Python was chosen for services that facilitated Neural Matching, and Elixir was chosen for services that realtime events to clients.
Data was stored in MongoDB and cached in Redis. Services talked to each other via REST and RabbitMQ. Everything is orchestrated in Kubernetes, and was designed from the outset horizontally scalable.
UI Design
While I made an initial design in Sketch, a lot of the decisions were made on the fly in code.
I chose to build the frontend in React Native using Expo. While initial prototypes were built in Swift using UIKit, I wanted the app to be cross platform between iOS and Android from the outset, and wasn't interested in learning Android development.
While React Native is a controversial chose for frontend, I had a lot of praise from developers I invited to try the app. One of them even thought the app was built in SwiftUI, until I told them it was React Native.
One of my favourite designs I worked on was the status bar for groups. On the left hand side, it shows you the current members of the group. On the right hand side, it shows the global week number—a synced number between all SESH groups. Every Monday, this would increment by one. You could tap this to view more details on the refresh - how many users, groups were affected. The border pill shape shrank over time as the group got closer to being refreshed.
What's Next
SESH is my favourite project I've ever worked on. I'm immensely proud of the end result, and how much I learned in regard to backend design, machine learning, and just building a fully fledged social network.
Once I have more time, I'd love to revisit it. I have a lot of unreleased ideas I want to explore in the future.