Description
Villa Schmidt is a family-owned premium furniture brand based in Germany, focused on high-quality furniture production in the mid-to-premium market segment. The company aimed to modernize its online store by replacing the default Shopify frontend with a custom-built solution, while keeping Shopify as the backend commerce system. Our task was to develop a new frontend layer using Nuxt, fully integrated with Shopify APIs.
Challenge
The main challenge of the project was working within Shopify’s technical constraints while building a fully custom headless frontend experience in Nuxt. The existing Shopify setup defined strict limitations on how product, collection, and storefront data could be structured and delivered through the Storefront API, which required careful adaptation on the frontend side. At the same time, the goal was to move away from a standard Shopify theme approach and implement a fully custom UI with flexible product and catalog pages. This required translating Shopify’s data models into a modular component system in Nuxt, ensuring that dynamic content such as product listings, detail pages, and collections could be rendered consistently. An additional challenge was designing a frontend architecture that would remain extensible for future features, while still being lightweight enough to be delivered within a very short timeframe.
Solution
We built a Nuxt-based headless frontend integrated with Shopify APIs, focusing on modular architecture and performance.
Key work included:
- Developing a custom storefront using Nuxt.js
- Integrating Shopify Storefront API for products, collections, and catalog data
- Building reusable UI components for product listing and product detail pages
- Implementing responsive design for a premium e-commerce experience
- Structuring frontend logic to support future scalability and feature extensions
Technology Stack
- Frontend: Vue.js, Nuxt.js
- Backend / Platform: Shopify
- Integration: Shopify Storefront API, REST API
- Architecture: Headless Commerce, API-driven frontend separation