angular-movies

May 25, 2026 · View on GitHub

This is a Movies App built using Angular and RxAngular.
As data source the The Movie Database (TMDB) API is used.

angular-and-rx-angular

Demo

A live deployment of this app is available to try it out.

Performance Optimizations

angular-movies--after-before

For now you can search the codebase for "Perf Tip" later on there will be propper documentation here.

Measures before optimization angular-movies-before_michael-hladky

Measures after optimization angular-movies-after-optimization_michael-hladky

Bundle Stats

NamesSize
chunk-H73X5IJZ.js176.04 KB
chunk-J5RJBBBA.js100.02 KB
main-HAHZT3VR.js30.06 KB
chunk-26THTVGX.js23.59 KB
chunk-MFJP3XQD.js13.34 KB
chunk-DD4274WW.js11.51 KB
chunk-UJXKG7ZY.js5.98 KB
styles-6J6M4RLR.css5.69 KB
chunk-F6TX2SNN.js3.56 KB
chunk-XEGPBJW5.js3.44 KB
chunk-BWRSEVT6.js2.31 KB
chunk-ENKFPH2E.js1.53 KB
chunk-3BVTSY3H.js1.31 KB
chunk-TERIXCX3.js1.11 KB
chunk-IPYUPOU3.js1.1 KB
chunk-IS6BG5PM.js981 Bytes
chunk-HMA6A7BH.js675 Bytes
chunk-7CGTOI24.js618 Bytes
chunk-SRLHFTA6.js559 Bytes
chunk-4EXWTXAN.js380 Bytes
chunk-PNQWYDWA.js310 Bytes
chunk-YPVBW5JE.js197 Bytes
chunk-6SM3TQVG.js153 Bytes
chunk-E2EYHV3P.js136 Bytes
chunk-QBRSGN6K.js125 Bytes
chunk-K3RHTP23.js96 Bytes
chunk-LFUTSNCE.js37 Bytes
Initial Total384.85 KB
NamesSize
movie-detail-page.component16.08 KB
person-detail-page.component12.17 KB
list-items-edit.component7.24 KB
list-create-page.component6.34 KB
movie-list-page.component6.22 KB
account-menu.component5.11 KB
account-list-page.component3.43 KB
list-detail-page.component3.22 KB
list-remove.component3.14 KB
list-image.component3.08 KB
not-found-page.component1.72 KB
list-movies.component1.08 KB
list-detail-page.routes610 Bytes
account-feature-page.routes550 Bytes
movie-list.component460 Bytes

Comparison to next and nuxt

angular-vs-next-vs-nuxt

Contributing

Contributions are always welcome!

For large changes, please file an issue to discuss your proposed changes with us before working on a PR :)

Installation

Clone and install the dependencies for angular-movies locally:

  git clone https://github.com/tastejs/angular-movies.git
  cd angular-movies
  npm install

Quick setup

  1. Use the Node version from .nvmrc (enforced via engine-strict in .npmrc):
    nvm install
    nvm use
    npm ci
    
    npm start and npm run e2e select the .nvmrc Node version automatically via scripts/with-node.sh (installs via nvm locally; uses setup-node in CI).
  2. Copy projects/movies/src/environments/environment.local.example.ts to projects/movies/src/environments/environment.ts (or environment.production.ts for prod builds).
  3. Add your TMDb API key and read access token.
  4. If port 4200 is stuck, stop the old process: lsof -ti:4200 | xargs kill -9

Running locally

Per Angular serve docs, the dev server uses @angular/build:dev-server (Vite). When ready it prints Local: http://localhost:4200/.

  • nx run movies:build:development: development build
  • nx run movies:build:production: production build (output: dist/projects/movies)
  • npm start / nx run movies:serve:development: dev server on port 4200
  • nx run movies:serve-static:production: serve the production build locally
  • npm run e2e / nx e2e movies: Playwright E2E (Chromium; starts dev server automatically). Multi-browser: PLAYWRIGHT_ALL_BROWSERS=1 npm run e2e
  • nx run movies:user-flow:development: legacy Lighthouse user-flow (local only, not in CI)

Playwright specs (legacy .uf.ts files kept under projects/movies/user-flows/):

Legacy user-flowPlaywright spec
ci-flow.uf.tse2e/sidebar-movie-detail.spec.ts
navigation.uf.tse2e/routes.spec.ts
account-feature.uf.tse2e/tmdb-auth.spec.ts (skipped in CI; needs TMDB)
fixxxx-ci-flow.uf.tsnot migrated (obsolete prerender check)

Run auth E2E locally: nx e2e movies --grep @auth

  • nx run docs:build: regenerate README bundle stats (output: dist/measures/movies)

Tech Stack

Built with:

angular-and-rx-angular

Measures:

Authors

Based on the original angular-movies foundation by @clamarque.

License

MIT