afterdark.← Back to the site
FROM DOWNLOAD TO MOVIE NIGHT

Your setup guide.

A no-build, static HTML/CSS/JavaScript site. No package install or backend is required for the supplied version.

1. Serve the folder

Unzip the package and upload the contents of afterdark/ to any HTTPS static host, such as Cloudflare Pages, Netlify or GitHub Pages. Select no framework, no build command, and use the folder containing index.html as the publish directory.

For local development, run a static server in the unzipped folder:

python3 -m http.server 8000

Then open http://localhost:8000. Do not rely on file://: YouTube embedding, clipboard access and storage behave differently without an HTTP origin. Use HTTPS for deployment.

2. Connect TMDB

Get an API credential from TMDB’s API settings. Click “Connect TMDB” or the avatar on the site and paste either a v3 API key or an API Read Access Token. Without a credential, the home page displays clearly labeled, fictional design-preview cards; they are not real TMDB data.

To configure a shared project credential, edit config.js and set tmdbCredential. This file is public. Optional remembered credentials use browser localStorage. Never put a private server secret in a static page. For a public production deployment, a rate-limited server-side TMDB proxy is recommended; it is not included in this static package.

The platform list comes from TMDB for the selected region; brands not listed in that region are omitted. Platform filters select subscription availability. Search filters are applied to each fetched search page; use “Load more” to inspect further results. Search-page sorting cannot globally reorder TMDB’s complete search corpus. Box-office sorting is supported for discovery; TMDB search results may not include revenue.

3. Configure movie playback

“Watch” opens the player using the movie’s numeric TMDB ID. No third-party full-movie stream service is enabled by default. VidRift or similar unofficial services are not integrated or verified. Add only HTTPS embed endpoints you are authorized to use whose terms permit embedding.

Edit the following public settings in config.js. This is example syntax, not a working service:

embedSources: [
  { name: 'Licensed source',
    urlTemplate: 'https://player.example.invalid/{type}/{id}',
    referrerPolicy: 'strict-origin-when-cross-origin' }
]

The app replaces {id} with the TMDB ID and {type} with “movie”. Multiple configured sources appear in a selector. Provider frames are sandboxed: scripts, same-origin operation, presentation/fullscreen are allowed; pop-ups and top-level navigation are not. Some players may not work under these restrictions. Embedding permission, DRM, subscription requirements and regional availability are controlled by the provider. The app cannot bypass frame restrictions or guarantee playback.

With no valid embed source configured, the player offers official streaming options and the YouTube trailer. YouTube trailers use TMDB’s videos endpoint, prefer official trailers, and provide a YouTube fallback link.

4. Live TV and donations

The Live TV page opens the official Pluto TV and Samsung TV Plus services. It does not embed or rebroadcast their channels. Regional and device restrictions apply.

Set both donation.address and donation.network in config.js to enable the USDT address and copy button. Verify your network and wallet independently before publishing. No wallet is invented, and no transfer is initiated by this site. Confirm your API licensing obligations if donations or other revenue make the deployment commercial.

5. Credits, dependencies and verification

Keep the TMDB logo, required notice, and JustWatch attribution in place. The bundled TMDB logo is an approved attribution asset sourced from TMDB’s branding page. Fonts load optionally from Google Fonts, with system font fallbacks.

API routes used: /genre/movie/list, /discover/movie, /search/movie, /watch/providers/movie, /movie/{id}, /movie/{id}/videos, and /movie/{id}/watch/providers, under https://api.themoviedb.org/3. Movie artwork loads from https://image.tmdb.org/t/p/ using TMDB response paths.

Functional browser tests use mocked TMDB responses to verify API wiring, filters, regions, dialogs, watchlist persistence, error handling, trailer URLs and source-ID substitution. No real TMDB credential was supplied; live authenticated TMDB access and third-party video playback have not been verified. No live website hosting is included.

Official documentation: Discover movies · Provider catalog · Availability / JustWatch · Videos · TMDB API terms and attribution.