Back to mobile

Choosa

Social Content Discovery Engine

A social decision-making app that solves 'choice paralysis' by allowing groups to swipe on movies and TV shows, using a real-time matching algorithm to find common interests.

My Role

Lead Developer & Architect

Stack

Flutter, Firebase, Firestore, Cloud Functions, Push Notifications

Impact

Real-time Match Engine • Cross-Platform (iOS/Android) • Multi-API Orchestration

App Screenshot
App Screenshot
App Screenshot
App Screenshot
App Screenshot

Interactive Gallery — Select or swipe to explore

System Architecture Log

Traffic Flow
Service Node
graph LR subgraph Client_Mobile [Mobile Frontend] A[Flutter App]:::traffic end subgraph Firebase_Core [Backend Services] Hub((Firebase SDK)):::hub B[Auth]:::node C[Firestore DB]:::node D[Cloud Functions]:::node E[Cloud Messaging]:::node end subgraph External_Data [Content Providers] F[TMDB API]:::traffic G[Movie of Night API]:::traffic end A <--> Hub Hub --> B Hub <-->|Sync State| C Hub -->|Trigger Match| D D -->|Push Notification| E E -->|Alert Group| A D --> F D --> G classDef traffic fill:#2563eb,stroke:#3b82f6,color:#fff classDef node fill:#16a34a,stroke:#22c55e,color:#fff classDef hub fill:#f59e0b,stroke:#d97706,color:#fff

PROJECT LOG // UX // MOBILE SYNCHRONIZATION

The Engineering Story

Choosa was built to solve the universal problem of "choice paralysis" in social settings. The challenge was creating a low-latency, real-time environment where group preferences could be aggregated and matched instantaneously.

Real-time State & Match Logic

The core engine utilizes Firestore's real-time listeners to sync swipe states across multiple devices simultaneously. I architected a custom matching algorithm within Firebase Cloud Functions that monitors group sessions; the moment a consensus is reached, the system triggers Firebase Cloud Messaging (FCM) to send push notifications to all participants, ensuring a seamless transition from "deciding" to "watching."

Data Orchestration & External APIs

To provide a rich library of content, I integrated the TMDB and Movie of the Night APIs. By utilizing a middleware layer in Cloud Functions, I was able to normalize data from different sources, filter results based on user-specific streaming subscriptions, and cache results to minimize API overhead and latency.

Mobile Deployment & Native Experience

Developing Choosa in Flutter allowed for a unified codebase while maintaining native performance on both iOS and Android. I managed the full deployment lifecycle, from configuring Fastlane for automated App Store and Play Store releases to handling platform-specific requirements like adaptive icons and deep-linking.