Beer In Cans
Beer In Cans uses Vendure to deliver a sophisticated shopping experience to craft beer lovers across Europe
I’m Lukas Chladek, a fullstack developer that recently left the corporate world of the automotive industry and jumped on board with the startup project BeerInCans.com (PivovPlechu.cz in Czech). Craft beers are a life passion of mine as well as for the whole team based in Prague, Czech Republic.
The main mission of our project is to offer easy access to wide portfolio of Czech craft beers in selected countries of Europe and the Czech Republic.
Traditionally craft breweries had to strictly rely on regional sellers due to the high costs of quality packaging equipment and beer preservation techniques. Conversely, beer fans had to travel around to be able to experience new products. Our solution is to handle the filling and packaging for the craft breweries in a perfect container - a can - and then provide the online point of sale where customers can buy products from dozens of breweries, always ready in stock.
This is an ambitious project, aiming to get hundreds of exclusive products to portfolio. With thousands and hopefully tens of thousands of returning customers in the coming future I wanted to make the solution as flexible and scalable as possible.
The biggest challenge was definitely being the only member of the dev department on a project that demands a lots of non-standard features. I sided with single-point management platform for multiple websites as well as single-point DevOps rather than traditional one-server-per-website approach.
This resulted in a concept of microservices architecture orchestrated by Kubernetes.
I have made quite a few projects using various PHP e-commerce systems in the past, and they offer an easy-to-setup, great out-of-the box experience, but their one-size-fits-all approach snowballs into shortcomings soon after your business starts growing.
Naturally I was searching for a flexible dev-first headless framework as a backend API that would fit in my microservice architecture concept. Only two open-source projects caught my eye - one being Django-based and then Vendure. Based on my knowledge of TypeScript and Angular this was a no-brainer for me.
Of course, I wanted to try something fresh, and the opportunity to learn played a part in decision process too!
I would say that the process of building the Vendure-based project was a standard developer job – make a concept, read the documentation, program it. If you miss some feature then you have to DIY (or in a case that the feature is general enough then propose it to the maintainers to implement and hope they’ll find it important enough to work it in the core ;-)).
For example my custom integrations solves the need of making sure that we always have our standardized protection shipping box full, fine-grain bulk and sellout discounts, dynamic X + Y free promotions, custom order fulfillment process based on a shipping method, automated order state updates, reminders for abandoned payments, imports/exports, invoice generator and much more…
The storefront is built with Angular. After the release of the Ivy renderer that simplified work with dynamic components, internationalization tools and new SSR (server-side rendering) features in Angular 10 I found my favorite SPA framework finally usable for a multilingual, SEO-friendly, performant website.
This was first time when I used GraphQL which was something new to learn and a bit of a challenge, but I grew fond of it. As content management system we are using WordPress for page editing, blogging and menus.
All in all it did. Most importantly we met our business goals, my team and customers are satisfied, and it also helped me to meet my architecture and personal goals. So far so good, and we are looking forward to new features coming in future releases. BeerInCans.com is a long-term project, and we will keep developing it together as Vendure and our customer-base grows.