Inspiration
We wanted to transform the way people discover what to watch next by combining the immediacy of YouTube trailers with AI-powered summaries. Instead of clicking through dozens of pages and wrestling with descriptions, users can instantly see a concise, AI-generated overview of each title, making browsing both effortless and engaging.
What it does
Cinemaker delivers a continuous stream of hand-picked movie and TV trailers in your browser. Users can Like or Dislike trailers to refine their personal taste profile, Skip to advance to the next title, and receive a real-time, AI-generated summary of plot and characters—all without ever reloading the page.
How we built it
Frontend: React with functional components and useEffect/useState hooks for live updates, combined with CSS for a clean, responsive UI.
Backend: Flask server exposing two endpoints (/api/skip and /api/describe), integrated with Google GenAI’s Gemini API for natural-language summaries.
Data Flow: On each skip, React posts the new title to Flask, which queries the AI model and returns a summary; React then updates the UI automatically.
Deployment Tools: Flask-CORS for cross-origin requests, dotenv for secret management, and local development on localhost:3000 (React) and :5000 (Flask).
Challenges we ran into
CORS Configuration: Ensuring React and Flask could communicate smoothly without CORS errors required fine‑tuning of headers.
Async State Management: Coordinating useEffect triggers with rapid skips and API latency meant handling race conditions and loading states.
Prompt Engineering: Crafting the right instructions for the Gemini model to produce concise, relevant summaries took several iterations.
Accomplishments that we're proud of
Seamless UX: No page reloads and instant summaries create a fluid browsing experience.
AI Integration: First-time successful integration of Google GenAI Gemini for dynamic content generation.
Taste Learning: Implemented a basic feedback loop (Like/Dislike) that adapts to user preferences over time.
What we learned
Deepened our understanding of React hooks (useEffect, dependency arrays) and state management.
Gained hands-on experience with Flask and RESTful API design.
Explored prompt engineering best practices to drive high-quality AI outputs.
Tackled real-world CORS and asynchronous data-fetching challenges.
What's next for Cinemaker
User Accounts & Persistence: Save likes/dislikes and viewing history to personalize the feed.
Recommendation Engine: Use feedback data to power smarter, personalized trailer suggestions.
Mobile Optimization: Create a React Native version for on-the-go browsing.
Enhanced UX: Add search, filtering, and playlists for deeper discovery.
Log in or sign up for Devpost to join the conversation.