0%
Joseph Mondragón
Español LET'S TALK

Panuts: WooCommerce on AWS and a mobile app · Case study

E-commerce · Web + App · Aug – Oct 2026

Panuts sells wine, spirits and gourmet food all across Peru. I joined to fine-tune their store and connect their new app to it.

Two fronts in two months, hand in hand with the Panuts team: site performance, the admin panel and payments on the web; full integration in the mobile app.

The starting point: A store with real traffic, ready to grow.

At that volume, every detail shows: one extra second at checkout, a payment that takes a while to confirm, a panel the team uses all day long. The goal was to find those details and solve them without slowing down sales.

What we agreed to review

  • Performance A store that responds just as fast at peak hours.
  • CMS A nimble panel for the operations team.
  • Payments Trace every payment error back to its cause.

Measure first: Before changing anything, measure where the time was going.

  • Web server CPU: 8% usage · plenty of headroom
  • Database capacity: 17% usage · plenty of headroom

The infrastructure had plenty of headroom, so the answer wasn’t adding servers. With metrics and error tracking on the checkout, it became clear where to look: streamlining the path of every purchase and every order in the panel.

What we fine-tuned: Three improvements, each one measured before and after.

  • What I saw: The thank-you page waited for electronic invoicing before loading. What I did: Invoice after the payment is confirmed, and move scheduled tasks out of the shopper’s way. (1 / 553 — thank-you pages with errors, down from 1 / 11)
  • What I saw: Fixed servers with lots of headroom and health checks stricter than needed. What I did: Automatic recovery and scaling based on real load. (10 → 4 — servers, 0 timeouts)
  • What I saw: Opening an order in the panel could take several seconds in the worst case. What I did: I optimized the panel’s heaviest queries and enabled caching. (23 → 2 s — worst case in the panel)

Some ideas were also left out, with the reason written down: a few cuts looked like easy savings but put payments at risk. Measuring before cutting is a decision too.

Search results for malbec on panuts.com
Also: a new search engine, authenticated transactional email and a new payment gateway in production.

The app: Next, connecting the app to the store.

The app already had its full design; what remained was integrating it with WooCommerce. Of 13 flows, 3 were already using real data: the rest were waiting on the cart, payments, orders and account integration.

Order history with test data
Order history with test data, ready to be connected.
Designed checkout, with no payment connected
Checkout designed; charging still had to be connected to the gateways.
Test address in the app
Test addresses, waiting for the customer’s real account.

The same app, now connected to the store.

  • One cart. What you add on the web shows up in the app, and vice versa.
  • Native payments. Native checkout on Android and iOS with the same gateways as the web.
  • Real orders. Identical to web orders for invoicing and logistics.
  • Notifications. Payment push notifications managed from WordPress; in QA they arrive in 5 seconds.

Technologies: What I worked with on the web and the app.

  • Commerce: WooCommerce, WordPress
  • Cloud: AWS
  • Search: Meilisearch
  • Mobile: iOS, Android, React Native

The result: A faster store that’s easier to run and costs less, plus an app ready to launch.

  • −40% — monthly AWS bill
  • 1/553 — thank-you pages with errors
  • 0 — timeouts across 635,529 requests
  • 291 — PRs across the app and its API

Visit panuts.com

Case studies

Let's talk.

Have a project in mind? [email protected]