A currently-in-theatres movie website for theatres near me. No showtimes, just the posters, for films playing today and tomorrow.
Next.js 16 (app router) project deplyed on Vercel ▲. Every night via GitHub Actions, it scrape my local movie theatres and saves the contents to a JSON file. The Next app reads the JSON file and searches for the normalized titles on TMDB to display the posters. No database. Statically-generated at build time.
pnpm ito installpnpm devfor the dev serverpnpm scrape:installfor Playwright installationpnpm scrapeto scrape,pnpm scrape -- --theater [id]for an individual theatre
AMC_API_KEYfrom AMC Developer PortalTMDB_API_KEYfrom TMDB API
theatres.config.json GitHub Actions (nightly)
│ │
▼ ▼
src/scraper/adapters/* ──► output/now-playing.json
(regal, cinemark, …) │
▼
src/lib/today-movies.ts
(group by title, split days)
│
▼
src/app/page.tsx (SSG)
+ TMDB poster lookup
│
▼
<FilteredHome> (client)
theatre filter + movie lists
Each theatre picks an adapter that knows how to fetch showtimes:
regal: Playwright (needs Chromium) loads Regal’s showtimes APIcinemark: HTTP + Cheerio against Cinemark’s showtimes endpointamc: AMC developer APIcinematheque: Cinematheque JSON showtimes endpoints
It only saves the films with dates that map to today and tomorrow to the JSON file.
I made this for myself and my partner and won’t be taking feature requests, but feel free to fork it for yourself! ♥