Repertoar

Introduction
Repertoar answers one question for people in Belgrade: what is on tonight. It gathers film, theatre, concerts, exhibitions and stand-up into a single editorial directory, layers curated highlights, a blog and a newsletter on top, and lets visitors keep favourites, rate what they saw and get told when something they care about is announced. It sells no tickets - it sends people to the venue - which makes the quality of the listing, not the checkout, the entire product.
Services provided
Frontend developmentBackend developmentUI/UX design
Industry
Media & Culture
Challenge
The Challenge
The site already existed on WordPress and The Events Calendar, and it already ranked. That made the rebuild harder than a greenfield build: years of indexed URLs had to keep working, because search is not a channel for this product, it is the business. At the same time the legacy data model could not come along - event details lived in custom fields the public API never exposed, so the production database itself was the only complete source. And a directory is only as good as how current it is, which for cinema means a repertoire that changes weekly across chains that publish it in incompatible ways.
Approach
Our Approach
We rebuilt the application from scratch on Next.js with Drizzle over Postgres and removed WordPress entirely, then wrote a migration pipeline that read the production database directly: 1,267 published events, 136 blog posts and roughly 3,500 images converted, re-indexed and verified by count, with every legacy URL mapped to a 301. Rather than adopt a headless CMS we built the admin panel into the same application, so editors work against the real content model and every mutation runs one write path - validate, authorise, write in a transaction with an audit row, revalidate, reindex search. Cinema repertoires are imported automatically from the chains that publish them, and venues carry geocoding, transit and contact data so a listing answers how to get there, not just what is playing.
Outcome
The Outcome
Repertoar went live on the new stack with its rankings intact and its content model finally matching what the site actually publishes. Editors work in an admin built for this domain instead of a generic CMS, the cinema listings keep themselves current, and visitors now have accounts, favourites and a newsletter that the old site never had.
Highlight
- Six content types - film, theatre, concerts, exhibitions, stand-up and other - under one editorial model
- Full migration off WordPress: 1,267 events, 136 posts, ~3,500 images, count-verified
- Every legacy URL preserved through a generated 301 map
- Custom admin panel in the same application, with an audit trail on every change
- Automated cinema repertoire import across multiple chains
- Venue pages enriched with geocoding, public transit and contact data
- Visitor accounts: favourites, ratings, comments and a double opt-in newsletter
- Server-rendered public pages, identical for logged-in and anonymous visitors
ContactContact us for any
Contact us for any
questions
Have a project in mind or need more information? Get in touch with us - we`re here to help and happy to answer your questions.