Inspiration

Streaming platforms make it easy to find something to watch at home. Finding a film at a nearby cinema is much more complicated. You might check several film sites, cinema listings, reviews, maps, emails, and voucher codes before you can make a plan.

I built GoReel to bring all of that into one place. It helps people discover a film, find a convenient showing, use any relevant vouchers, and save the memory afterwards.

For me cinema is about more than buying a ticket. It is a reason to spend time with friends, plan a date, or enjoy discovering something new on your own.

What GoReel does

When users first open GoReel, they choose films, genres, moods, and an area of London that interest them. GoReel uses these choices to understand their taste and suggest relevant films.

Users can:

  • Get film recommendations based on their preferences
  • Search and filter by genre, mood, date, and time
  • Find nearby cinemas, showtimes, and travel distances
  • Rate suggestions to improve future recommendations
  • View booked films in a Cinema Memory timeline
  • Save details such as who they went with, what they ate, the weather, and how they felt
  • Add, edit, copy, use, and remove cinema vouchers
  • Receive notifications when vouchers are used or expire

Only films marked as Booked are added to Cinema Memory. This keeps the timeline focused on cinema trips that actually happened or are planned.

How I built it

GoReel is a responsive website built with:

  • React
  • TypeScript
  • Vite
  • React Router
  • CSS and animated SVGs
  • Browser localStorage
  • Film posters from TMDB
  • Cloudflare Workers, deployed through GitHub

The recommendation system does not need an AI API while the app is running. Instead, it gives each film a score based on the user's taste, distance from the cinema, film rating, showtime, and available vouchers:

[ \text{Score} = 55T + 20D + 10R + S + 5V ]

Here:

  • (T) measures how closely the film matches the user's taste
  • (D) rewards showings at cinemas that are closer to the user
  • (R) represents the film's rating
  • (S) adds up to 10 points for a convenient showtime
  • (V) adds 5 points when an active voucher can be used

The system learns from feedback. Choosing Loved has a stronger positive effect than Interested, while choosing Disliked makes similar films less likely to appear in the future.

To keep the demo reliable during judging, the cinema listings, showtimes, ratings, vouchers, and booking links use clearly labelled sample data. TMDB provides the film posters. In a production version, the sample data could be replaced with licensed cinema, review, and booking APIs.

How Codex and GPT-5.6 helped

I had two days to turn a broad idea into a working project. Codex and GPT-5.6 helped me break the idea down, plan a realistic MVP, and decide which features were most important.

I used Codex to explore live APIs, sandbox services, and local sample data. After comparing the options, I chose local data so the demo would remain reliable and would not depend on limited API quotas during judging.

I made the main product and design decisions, including:

  • Building a website instead of a native app
  • Focusing the first version on London
  • Using a transparent, rule-based recommendation system
  • Adding only booked films to Cinema Memory
  • Including a voucher wallet
  • Creating a warm, romantic, watercolour-inspired visual style

Codex helped me move faster when building the React and TypeScript app. It supported me with the recommendation logic, saved browser state, responsive layouts, SVG animation, debugging, testing, Git, documentation, and preparation for deployment on Cloudflare.

Challenges

The biggest challenge was deciding what to include. My original idea covered live APIs, natural-language search, reviews, bookings, recommendations, memories, and vouchers. With only two days, I had to focus on the features that created the clearest and most complete experience.

The animated Taste Map was another challenge. I wanted it to reflect the user's preferences, rather than simply look decorative. The cloud sizes had to change over time, the category percentages always had to add up to exactly 100%, and editing or deleting a memory could not break the selected point on the timeline.

I also spent a lot of time refining the visual design. The watercolour clouds needed to feel soft and slightly uneven while keeping the text readable, the movement subtle, and the layout usable across different screen sizes.

What I learned

I learned how important it is to think about the whole user journey. Discovering a film becomes much more useful when it connects naturally to showtimes, bookings, savings, feedback, and memories.

Most importantly, I learned how to work effectively with Codex. I used it for more than writing code: it helped me compare options, test ideas, debug problems, and move quickly between product decisions and implementation.

What's next

In the future, I would like to add:

  • Live cinema listings and booking data
  • Ratings and reviews from live sources
  • User accounts and cloud syncing
  • Shared cinema plans with friends
  • Calendar integration
  • Better voucher matching
  • Support for locations outside London
  • Private and optional sharing of Cinema Memories

Built With

Share this project:

Updates