Skip to main content

How we've built the unKonf ticketshop

· 4 min read
Stephan Hochdörfer
Head of IT Business Operations

For years, we relied on an external ticketing service for selling unKonf tickets. When the service ceased to exist after COVID-19, we decided to build a custom Sylius platform to handle ticket sales. Initially, we used Sylius 1 but decided to migrate to Sylius 2 earlier this year due to the end of support for Sylius 1.

How did we approach the migration?

First, we reviewed the plugins used in our Sylius 1 instance and checked their availability for Sylius 2. Some plugins, like Setono Terms plugin and Setono Redirects plugin, required updates, which we completed and submitted as PRs on GitHub.

The CustomOptionsPlugin from Brille24 posed a significant challenge, as it was a key requirement for our ticket sales flow but lacked a Sylius 2 compatible version. In the end, we decided to build our own simplified version, leveraging AI coding agents to mimic the Sylius attribute system. This approach allowed us to learn how to work with coding agents in a real-world project as well as build a solution that exactly matches our limited requirements.

Transitioning the frontend from Sylius 1 to Sylius 2 was more effort due to changes in HTML and Twig structure. Even though we've been using the Sylius Bootstrap Theme before, there have been a lot of structural changes that we had to adapt to. While we could reuse the styling for isolated components like our countdown component, other parts like the main menu bar, the product details page or the checkout had to be rebuilt from scratch.

We started our development with a clean Sylius 2 setup using DDEV which is our default project setup method. First, we installed the necessary plugins and ported the existing backend logic over. The latter was simple, basically just a copy-and-paste task. Once we got the backend functionality working, we focused on getting the frontend to look right.

Plugins we are using

We are using the following 3rd party plugins in our ticket shop project:

Additionally, we've developed a few custom Twig components to fetch the main menu structure and sponsors component from our main Sulu website, ensuring data consistency.

Conclusion

Although we started with a solid foundation - a codebase compatible with Sylius 1.14 and a Bootstrap CSS-based frontend - the migration to Sylius 2 still required significant effort.

Was it worth the effort?

Overall Sylius 2 has simplified several aspects of our workflow. For instance, we use net pricing internally, as we need to sell tickets without VAT to companies outside of Germany. In Sylius 1, we worked around this by displaying the gross price from a separate product property and used the net price for the regular calculations. With Sylius 2, we were able to override the relevant components to display the gross price in the frontend while calculating with the net price in the background.

Also, operating a Sylius store gives us a unique merchant-centric perspective, which proves invaluable in our project work.

By the way, the unKonf ticket sale started last week! If you're interested in attending this year's event, act fast - tickets will sell out quickly. Trust my words.