The Disney+ Hotstar Clone uses a completely flat file structure — all source files sit directly in the project root alongside two asset folders. There is noDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Vipul-Gejage/Disney-Hotstar-Clone/llms.txt
Use this file to discover all available pages before exploring further.
src/ directory, no dist/ output folder, no node_modules/, and no configuration files of any kind. Opening Hotstar.html in a browser is all that is needed to run the project; every resource is referenced by relative path.
Directory Tree
File Roles
Hotstar.html
The entry point of the application. It defines the full DOM structure for the fixed navbar (brand logo, navigation links, search box, Subscribe button, and Login link), the five-slide hero carousel, the five franchise video cards, and both movie rows. Each movie card’s “Add to Watchlist” button calls showFullscreenAlert() via an inline onclick attribute. The file links Hotstar.css for styles and Hotstar.js in the <head> for behavior.
Hotstar.css
The main stylesheet for Hotstar.html. It sets the global dark background (#0c111b), styles the fixed navbar with flexbox, defines the carousel container with overflow-x: hidden and CSS transform-based transitions, controls the franchise video card hover swap between <img> and <video>, and handles the horizontally scrollable movie rows with hidden scrollbars (::-webkit-scrollbar { display: none }). It also defines the #fullscreen-alert overlay and .alert-content modal used for watchlist feedback.
Hotstar.js
Contains three independent JavaScript blocks, all scoped behind DOMContentLoaded listeners or standalone functions:
- Carousel — Queries
.sliderelements, clones them all and appends the clones to.carouselto enable seamless infinite looping, then advances the carousel every 3 000 ms usingsetIntervaland a CSStranslateXtransform. When the index reaches the end of the original slides, the transition is briefly disabled and the position is reset to zero. - Video Cards — Queries all
.video-cardelements and attachesmouseenter/mouseleavelisteners. On enter,video.play()is called; on leave,video.pause()is called. The CSS.video-card:hoverrules handle showing/hiding the<img>versus<video>elements visually. - Watchlist Alert — The
showFullscreenAlert()function dynamically creates a<div id="fullscreen-alert">overlay, appends it to<body>, and fades it in by settingopacityto1after a 10 ms timeout.closeFullscreenAlert()fades it out and then removes the element from the DOM after 300 ms.
login.html
A standalone page with a centered login form. The form has a <label> and <input type="tel"> for a mobile number, and a submit button whose onclick handler overrides the default form submission with location.href='./otp.html'. The form action attribute references generate-otp.php, which is not present in the repository.
login.css
Shared stylesheet imported by both login.html and otp.html. It vertically and horizontally centers the .container card using display: flex on the <body>, applies a white card with border-radius and box-shadow over the same #0c111b dark background as the main page, and styles the input fields and the blue submit button (with a darker hover state).
otp.html
Structurally identical to login.html. It replaces the heading and label text with “Enter OTP”, and the submit button’s onclick navigates to ./hotstar.html (lowercase) instead of ./otp.html. It imports the same login.css.
Page Flow
The three HTML pages form a linear navigation sequence that simulates a login gate in front of the main content.Land on Hotstar.html
The user opens
Hotstar.html directly in a browser. The auto-advancing hero carousel starts immediately, franchise video cards are ready for hover interaction, and both movie rows are browsable. The fixed navbar exposes a Login link in the top-right corner.Navigate to login.html
Clicking the Login link in the navbar (
<a href="./login.html">) navigates to login.html. The user is presented with a mobile number input and a “Generate OTP” button.Navigate to otp.html
Clicking “Generate OTP” triggers the
onclick handler, which calls location.href='./otp.html'. The user is taken to the OTP entry form. No actual OTP is sent or validated.The navigation flow is entirely client-side. Both
<form> elements (in login.html and otp.html) carry a method="post" attribute and an action pointing to a PHP file, but every button overrides the default form submission with a location.href redirect. No HTTP POST requests are ever made.