DEV Community

Cover image for Moviio: A Pure CSS 3D Carousel Movie Explorer
Bilal Malik
Bilal Malik

Posted on • Edited on

Moviio: A Pure CSS 3D Carousel Movie Explorer

I wanted to build a movie discovery app that felt as cinematic as the films it showcases. So I created Moviio - a 3D carousel movie explorer powered by TMDB, built entirely with vanilla JavaScript and CSS (no frameworks, no carousel libraries).


The Core: A Custom 3D Wheel

The main feature is a 7-card 3D wheel. Each card is placed using CSS custom properties (--slot) and 3D transforms.

.card-0 {
  --slot: translateY(55px) translateX(-13px) rotate(-63deg);
}

.card-3 {
  --slot: rotate(0deg) scale(1);
}

.card.active {
  filter: grayscale(0%) brightness(1);
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5);
  pointer-events: visible;
}
Enter fullscreen mode Exit fullscreen mode

The center card pops with a parallax tilt effect that reacts to your mouse, and you can swipe, drag, or use arrow keys to rotate the wheel.


What It Does

Trailer Overlay

Click the active card to open a full-screen cinema view with YouTube trailers, runtime, cast, and director details.

Persistent Watchlist

Save favorites to localStorage. The Watchlist filter dims the carousel and shows an empty-state message when nothing is saved.

Auto-Rotate & Shuffle

Let the wheel spin automatically (pauses on hover) or jump to a random page of movies.

/?movie_id=...
Enter fullscreen mode Exit fullscreen mode

Keyboard Shortcuts

  • ← / → - Navigate the carousel
  • Enter / Space - Open the trailer
  • Escape - Close the overlay

The Backend (Simple)

API requests go through a Vercel serverless function (/api/tmdb.js) that acts as a proxy. This keeps my TMDB API key secure while forwarding the real status codes from TMDB.


Built With

  • HTML5
  • CSS3
  • Vanilla JavaScript
  • TMDB API
  • Vercel

Visuals

Development Roadmap
Step‑by‑step build journey from concept to deployment - a visual roadmap of how Moviio was constructed.

Runtime Architecture
How data flows through the app - from user interaction to TMDB API, local storage, and the trailer overlay.


Try It Out


If you enjoy the project, give it a ⭐ on GitHub - it really helps!

Top comments (0)