Delizie D’Italia is an Italian startup selling typical regional food and beverages, targeting both domestic and international audiences
Artcoded is a small Italian software engineering and development agency. Our mission is to enable small-to-medium sized businesses to seriously catch their own digital opportunity. “Seriously” means not just “being online”, but aiming to be really competitive, even with respect to more established and digital-native players.
With this approach we carefully select the most appropriate technologies to invest and specialize in. That’s also how we discovered Vendure and made it a core part of our Artcoded Stores e-commerce solution.
Delizieditalia.net is our first e-commerce project using Vendure. Delizie D’Italia is a local startup selling typical Italian food and beverages, targeting both domestic and international audiences. Being a digital-first business, they wanted an e-shop solution that wasn’t just a showcase of their products, but provided a best-in-class user experience, which has a direct impact on establishing credibility online and on conversion rates, especially considering the initial low brand awareness. They also required multi-language functionality (English and Italian) and great SEO (search engine optimization).
At first, we adopted another framework (Reaction Commerce) for our project. We weren’t totally comfortable with this choice, so we considered different options. Then we found Vendure, and it seemed to better suite our needs for the following reasons:
- Out-of-the box support for multi-language stores (this would have required extensive work with the previous framework)
- Oriented to developer customization, with a powerful but simple plugin system
- First-class documentation, including specific guides for customization
- Great and continuous support from Vendure creators/maintainers to the developer community
We deployed our project using Docker over self-managed VPS and using AWS for asset storage (S3) and database (RDS for Postgresql). We also switched from our two Reaction Commerce Stripe and Paypal plugins to a single Braintree plugin, which simplified payment flow development and management (also for our client).
We built a custom plugin for shipments, as our customer needed price logic to be based on parcel weight, geographical location and order total value at the same time. We found it quite straightforward to add this custom logic to the system.
Finally, we worked on email functionality, by integrating SendGrid (both for sending transactional emails and to build an email list) and by extending the native email templates and events.
Thanks to DevOps automation technologies, we are establishing our “sweet spot” between a totally custom single-client application and traditional SaaS multi-tenancy (i.e. totally shared resources, such as database, servers, etc.). By leveraging technologies like Pulumi, our solution allows us to still have multiple instances of our stack for multiple clients - totally independent of each other and thus fully customizable - while at the same time making it really easy, fast and efficient to deploy an entire new Vendure stack for each new customer, minimizing marginal costs.
We have gained extensive experience with Next.js: we believe it’s a perfect match for e-commerce projects specifically, as it allows to fine-tune and mix static and dynamic content generation approaches on a per-page basis.
We used Apollo Client to interface with the Vendure GraphQL API, by combining server-side queries with client-side ones, as needed for each single page/route. We took advantage of the great typing integration between Typescript and GraphQL (using graphql-code-generator), which makes it very easy to build our data layer. We are also using Next-translate for internationalization and Tailwind CSS for the UI.
Its headless approach has allowed us to cherry-pick storefront technologies to suit our skills and requirements. Its technological stack ensures reliability and top-level performance. The ability to use Typescript across the whole stack, as a single (and robust) language, is very important to us. This ensures a consistent and efficient developer experience, especially when combined with Vendure’s GraphQL API.
Finally, the plugin system gives us the flexibility to tailor our solutions to our customers' needs, while making common functionality easily reusable.