Skip to content

Sofa

A native iOS watchlist app for films and series — TMDB search, personal library, watch tracking and ratings.

Overview
year
2026
role
iOS design and development
status
Completed
front
SwiftUI, Swift
data
SwiftData, TMDB API
Sofa — full-screen map view
Sofa — overview

Context

The project

Sofa answers an everyday problem: knowing what to watch, and above all remembering what you meant to watch. The app lets you search for a film or series through the TMDB API, add it to your library, mark what you've seen, rate titles and see where to stream them.

Stack

A 100% native iOS app, written in SwiftUI with SwiftData for persistence. No cross-platform framework, no WebView: the animations, the gestures and the system behaviour are those of an iOS app, because that is precisely what separates an app you keep from an app you delete.

SwiftData handles local persistence, which makes the library readable offline — only search and detail refreshes need the network.

Design

A dark interface, inspired by the atmosphere of a cinema: deep backgrounds, posters given room to breathe, high-contrast typography. The design system is defined once — colours, spacing, type — then applied consistently across every screen.

What I took away

Coming from the web, SwiftUI asks you to unlearn a few reflexes. The layout system doesn't work like Flexbox, and state propagation follows its own rules. In exchange, the integration with the system — widgets, sharing, dark mode, accessibility — is on a different level from anything you get in a web app.

Architecture

01 · Search

TMDB API queries for title search and detail sheets.

02 · Storage

Library and watch history persisted with SwiftData, readable offline.

03 · Enrichment

Available streaming platforms pulled from TMDB.

04 · Interface

Dark design system inspired by cinema auditoriums, in native SwiftUI.

Interface

Filter and source panel
Detail view of a single item

Next project

Rootine

Continue