A single-page web app that fetches movie showtimes from the Gracenote (TMS) API and displays them grouped by movie or by theater. No backend, no build step — everything lives in index.html.
- Entry point:
index.html(embedded CSS + JS, no build tool — edit directly) - All application logic:
window.Marqueenamespace object in the<script>block - Deployment:
bundle exec s3_website push(AWS credentials in.env) files/: reference mockups and a sample API response — never deployed
Form submit → fetchMovieTimes() → processShowtimes() → renderShowtimes()
Key data structures on Marquee:
apiShowtimeCache— keyed byzip--radius--date; prevents redundant API callsdataForMovie/dataForTheater— metadata indexed byrootId/theatreIdshowtimesByMovie/showtimesByTheater— hierarchical groupings for the two view modesshowtimeBlocks— pre-rendered HTML fragments keyed bymovieId--theaterId
The Gracenote TMS API key is AES-encrypted and stored in Marquee.apiKeyEncrypted. It is decrypted at runtime via the Web Crypto API (crypto.subtle) using PBKDF2 key derivation, with the password casablanca supplied by a hidden form field. See files/api.txt for a representative response.
- UI changes:
<style>block inindex.html; one breakpoint at900px - Add/change metadata:
createMovie()populatesdataForMovie;createShowtimeHTML()renders it - Add a filter: form HTML →
serializeForm()→fetchMovieTimes() - Add a view mode: follow
showtimesByMovie/showtimesByTheater; updaterenderShowtimes()andchangeGrouping()
- Tabs, not spaces
- Do not split
index.htmlinto separate files — the monolithic structure is intentional - Do not commit
.env