Skip to content

Vanina Boutique online store

The online store and mobile app for a Romanian fashion boutique: Laravel and Bagisto on the web, Flutter on mobile, connected to the shop's ERP, couriers and payments.

The client#

Vanina Boutique is a women's fashion boutique in Bârlad, Romania, selling clothing, shoes and bags in store and online at vanina.ro. I'm the developer behind the platform, from the first Magento store to the current Laravel rebuild and the mobile app.

What I built#

  • Web store on Laravel 12 and Bagisto, with a custom theme and eleven in-house packages.
  • Mobile app for iOS and Android in Flutter, talking to the store over GraphQL.
  • ERP sync with the shop's Sedona POS. Products, stock, prices and categories come in, invoices go back, and out-of-stock products are hidden automatically.
  • Romanian payments and shipping: Netopia card payments with server confirmation, cash on delivery, and a custom Sameday integration with shipping labels, tracking, and easybox locker selection at checkout, on the web and in the app.
  • Promotions engine for catalog rules, with promo badges on product cards and product pages.
  • Marketing tracking: GA4 through Tag Manager, Facebook Pixel with the server-side Conversions API, TikTok Pixel and Events API, and product feeds for Google Merchant Center and Facebook, all behind cookie consent.
  • Admin security: two-factor login for staff and reCAPTCHA Enterprise.

The store#

One store on every device: the same catalogue, cart and checkout on desktop and on phones.

vanina.ro home page on desktop and on a phone, with the seasonal campaign banner

Below the banner, the home page answers the questions shoppers ask first: stock, payment, returns and style help, then the main categories.

vanina.ro trust strip with real-time stock, card or cash payment, style help and 14-day returns, above the clothing, shoes and bags categories

Product cards show "new" and offer badges, available sizes and colours at a glance.

A grid of vanina.ro product cards with NEW and OFERTĂ badges, size labels and colour dots

The product page brings together the gallery, sizes, estimated delivery dates, the returns promise and a WhatsApp shortcut for quick advice.

vanina.ro product page for a velvet dress: image gallery, size picker, add to cart, WhatsApp help and delivery details

The layout is mobile-first, with swipeable images on every product card.

Three phone screens of vanina.ro: home page, latest arrivals and the product grid

The mobile app#

The Vanina.ro app brings the same store to iOS and Android, in Romanian, connected to the shop over GraphQL.

Vanina.ro app: a category product list, the Discover home screen and the shopping cart

Shoppers browse by category and subcategory, search, and filter by size, price and colour.

Vanina.ro app category list with offer badges, next to the filter sheet with sizes, a price slider and colours

Favourites are saved to a wishlist, and the cart supports coupon codes before checkout.

Vanina.ro app saved items, next to the cart with totals and a coupon code field

The full flow, from discovery to checkout:

Five Vanina.ro app screens in a row: home, category, filters, saved items and cart

Technical highlights#

  • Upgrading a customised fork. Moving Bagisto from 2.2 to 2.4.6 without losing any customisation: a conflict audit, security backports, and database migrations reconciled so they run cleanly on both production data and a fresh install.
  • Faster ERP imports. The sync was rewritten to batch its queries, with one lookup instead of several per product and batched attribute writes, so large catalog syncs no longer flood the database.
  • One API for web and mobile. A custom GraphQL layer on top of Bagisto's adds locker lookup, county lists, social sign-in and a lighter category tree for the app.
  • A smooth mobile catalog. Product lists load the next page halfway down the scroll, so browsing never waits on the network.
  • Tested and automated. Pest tests for the custom packages, Playwright end-to-end tests for the shop and the admin, and GitHub Actions for tests, code style and Docker builds.

Stack#

Laravel 12, Bagisto, Vue, GraphQL (Lighthouse), MySQL, Redis, Elasticsearch, Flutter with BLoC, Firebase, Docker.

Status#

Live at vanina.ro, with ongoing development.