Work
UniversityUniversity · Frontend

Movies Explorer

A movie explorer with search, filters and a persistent personal list.

View live site

Screenshot of Movies Explorer
SYSTEM.md

The problem

Making a large catalog navigable without overloading the interface or repeating needless requests.

What I built

An Angular 19 app with Angular Material that queries TMDb directly, with debounced search, filters and a detail view with a trailer.

Outcome

An academic project on consuming APIs and building a responsive browsing experience.

Decisions that mattered

  1. 01

    Controlled search

    Debounce groups typing before querying, while filters narrow the catalog.

  2. 02

    No backend of its own

    The app runs in the browser: it calls TMDb and keeps favorites and the personal list in LocalStorage.

Technologies

  • Angular
  • Angular Material
  • TMDb
  • LocalStorage

C4 model. The pulsing line is the main path of a request.

Level 1 · who uses the system and what it connects to

HTTPS1HTTPS2UserSearches and saves moviesMovies ExplorerMovie explorerTMDb[TMDb API]Movie catalog

Level 2 · the applications and data stores it is made of

Browser1REST · API key2favorites · watchlistUserSearches and saves moviesAngular app[Angular 19 · Material · Vercel]Search, filters and detailTMDb[TMDb API]Movie catalogLocalStorage[Browser · LocalStorage]Favorites and personal list

Level 3 · the components inside the API

searchcatalog1routequerylist2movieHTTPS3favoritesMovies page[movies page]Brings the sectionstogetherFilters and search[filters · debounce]Debounce, genre, year andratingRows and cards[rows · cards]Catalog categoriesDetail[detail · trailer]Sheet, trailer and similarMoviesService[MoviesService · HttpClient]Queries TMDb and storesfavoritesTMDb[TMDb API]Movie catalogLocalStorage[Browser · LocalStorage]Favorites and personal list
  • Person
  • System
  • Container
  • Database
  • External
  • Main path
  1. 01Search
  2. 02TMDb
  3. 03Catalog
  4. 04Personal list

CV

Get my CV

Leave your email and I will send the CV there. First I check the address is yours with a code.