Moovy
Our own film app for iOS and Android: swipe through films, match together, with a backend and recommendation engine of our own. Still in development, reviewed by Apple.
- iOS and Android from a single codebase
- 2 platforms
- Genre, combination, keywords, director and cast in the taste profile
- 5 signals
- Shared match sessions over an open connection
- Real time
Why we built this
The evening you spend forty minutes scrolling through three streaming services and end up rewatching an old series is a familiar problem. With two people it gets worse: one wants a thriller, the other something light, and the catalogues are so full that the sheer choice prevents any decision.
The providers’ own recommendations only help so much, because each service knows only its own catalogue and mostly pushes whatever it currently wants to promote. We wanted the opposite: a feed that learns your taste, looks across providers, and turns deciding together into part of the fun.
Objective
An app that settles film night in minutes rather than three quarters of an hour:
- go through films like a short-video feed and like them with a swipe
- recommendations that learn from your own likes rather than an editorial list
- only show films that actually run on the streaming services you have
- decide together: two people swipe in parallel, and a shared like becomes a match
- everything in-house, meaning our own backend, our own recommendation logic, our own data
Solution
One app for both platforms. The app is built in Flutter and runs on iOS and Android from a single codebase. Four areas: the personal feed, the match mode, saved films and the profile.
Recommendations that learn along. Your likes build a profile that weights genres, genre combinations, keywords, directors and cast differently. Recent likes count for more than old ones, dislikes subtract. To stop the feed collapsing into a bubble, the system deliberately mixes in well-rated films outside your profile, and never places more than two titles from the same franchise in a row.
Availability, not wishful thinking. During onboarding you pick your streaming services. The feed takes that into account, so it will not recommend a film that would require yet another subscription.
Swiping together. A match session is shared via a code, a QR code or a link. Anyone opening the link lands straight in the session. From there everyone swipes through the same selection in parallel. When two people like the same film, the match appears on both devices immediately, with nobody having to refresh. Technically the app keeps an open connection to the server, monitored and re-established automatically whenever the network drops out briefly.
A backend of our own. Behind the app sits our own server stack: a Python API, a PostgreSQL database and a service that refreshes the film data nightly, plus an admin area for maintenance and analysis. All of it runs containerised on our own server.
Accounts and data protection. Sign-up with email confirmation, the access token held only in memory, the long-lived token in the device’s secure storage. If someone deletes their account, the data is anonymised immediately and removed for good after a retention period. A patchy mobile connection never throws anyone out of their session; only an actual rejection by the server does.
Outcome
Moovy is our largest own project and at the same time our proving ground for everything we offer in client work on mobile: Flutter across both platforms, a custom API backend, real-time connections, recommendation logic, authentication and a compliant approach to user accounts. Anyone wondering whether we can really build an app from the first sketch through to the running server can see it here, on a product we own end to end.
The app is still in development and not publicly available in the stores. What already stands is the full path from the feed through the match sessions to the backend.
Talk directly to the founders.
No contact form maze. Write us directly, we reply personally.