The Problem
Finding something to watch shouldn't feel like a chore. Legacy movie sites are often weighed down by heavy ads, sluggish page transitions, and buried streaming links. I wanted a tool that got straight to the point: instant search, immediate streaming availability, and quick, objective AI synopses.
So, I solo-developed Galaxy Movies.
Live Demo: https://www.galaxymovies.app/
GitHub: https://github.com/NickFasulo/galaxy-movies
Key Features
Lightning-Fast Search: Browse thousands of titles and explore cast networks in a clean, cosmic dark-mode UI.
One-Click Streaming Check: Instantly view exact platform availability (where to stream, rent, or buy) without jumping through menus.
Instant AI Synopses: Concise, objective film overviews powered by OpenAI to give quick context before pressing play.
Dynamic OG Cards: Social share preview cards rendered on the fly with custom branding.
Tech Stack & Architecture Highlights
- Frontend: Next.js (Pages Router) + Chakra UI
- State & Data: React Query + TMDB API
-
Edge & AI Services: Vercel Edge Runtime (
@vercel/og) + OpenAI API - Quality Assurance: Lighthouse CI
-
Dynamic Social Cards on Vercel Edge Runtime: Built dynamic Open Graph image generation using
@vercel/og. Requests parse title and poster data on Edge functions to serve custom social cards with sub-100ms response times. - TMDB Image Optimization Bypass: Direct-to-CDN poster loading to bypass server image transformation limits while maintaining high performance.
- Automated Quality Checks: Integrated Lighthouse CI to enforce performance, accessibility, and SEO thresholds on builds.
Top comments (2)
Thanks for checking out Galaxy Movies! š
Drop a comment if you test it out on mobile or desktop. Iām hanging out in the comments to answer any technical questions about the architecture or feature requests!
The dynamic OG cards are a nice touch. Two things I'd check since both the cards and the synopses sit on paid or rate-limited calls:
@vercel/ogresponse has a longCache-Control(e.g.public, s-maxage=86400, stale-while-revalidate=604800). Link unfurlers from Slack, Discord, X and iMessage each fetch the image, sometimes several times per paste. Without CDN caching every share re-renders the card and re-hits TMDB.Did Lighthouse CI flag anything on the poster-heavy pages, like LCP from the first poster image?