Petals & Chocs: Smart Shipping for a Two-Branch Gift Shop — Nearest Branch, Live Lalamove Quotes and City-Link Fallback
By Shamsuddin Salleh, Founder & CEO

Petals & Chocs is a Klang Valley gift and hamper shop with branches in Seri Kembangan and Rawang, delivering fruit baskets, hampers, flowers and corporate gifts across KL and Selangor, same-day for orders placed before the daily cut-off. Prigo X Technologies built petalsandchocs.com, an e-commerce platform whose checkout works out which branch should fulfil an order, quotes a Lalamove delivery live for same-day door-to-door service, picks the vehicle from what is in the cart, and sends destinations outside the same-day area by City-Link Express — all before the customer pays.
The client
Petals & Chocs sells perishable, fragile gifts: fresh fruit, flowers, chocolate. A hamper has to arrive the same day it was made, intact, and often at a precise moment — a birthday, a hospital visit, a festival. The shop runs two branches, and most of its orders come with a delivery address rather than a pickup.
Before the platform, that meant staff deciding by hand, for every order, which branch should make it, whether the address could be reached the same day, what the courier would charge, and which courier to use. Every one of those decisions was a message, a wait, and a chance to get it wrong.
The shop's first requirement, though, was speed. Its previous WordPress site carried a long list of plugins and had become slow enough to cost sales: on 24 June 2026, Google's PageSpeed Insights scored it 54 for mobile performance, with the largest content taking 5.1 seconds to appear and a Speed Index of 14.2 seconds, and Google's field data from real visitors showed Core Web Vitals failing. A gift shop sells on photographs, and a slow site means the photographs arrive after the customer has gone.
What Prigo X built
The platform Prigo X built for Petals & Chocs.
Smart shipping at checkout
- Nearest-branch fulfilment. Branches are managed in the admin (address, coordinates, opening hours, what each can do). When a customer confirms a delivery address, checkout recommends the nearer eligible branch for that order and lets them change it. The chosen branch is validated server-side and frozen onto the order, so the courier is dispatched from the branch that actually made the hamper, and later edits to branch settings never change a paid order.
- Live Lalamove quotes, automatically. Confirming the address triggers a serviceability check and a live Lalamove quotation with no "get quote" button. Same-day deliveries go door-to-door with one driver loading and unloading, priced from Lalamove's own quotation rather than a hard-coded add-on, and the fee shows as a separate line in the CHIP payment total.
- Automatic vehicle choice. The platform looks at every item in the cart — dimensions, normalised across the units products were entered in, and quantities — and selects the Lalamove vehicle that can carry the order. Customers never pick a vehicle, and an order too large for any configured vehicle fails safely instead of quoting the wrong one.
- City-Link Express for everywhere else. Addresses outside the same-day area are routed to City-Link, priced from an admin-managed rate matrix by postcode and weight. After payment the shipment is created on City-Link's API, the airway bill and label are stored on the order, and tracking status is polled for customers and staff. Cancelling an order cancels the booked shipment, so a refunded parcel is never still travelling.
- Delivery sessions that match branch hours. The morning, afternoon and evening sessions a customer can choose are computed from the selected branch's opening hours for that weekday and the same-day cut-off, and the server enforces the same rule, so nobody can book a slot the branch cannot fulfil.
- Dispatch that recovers. If a Lalamove order cannot be placed after payment, the order is flagged for staff rather than lost, and the admin order view shows the courier status, driver details and quote breakdown.
Everything around it
- Product catalogue with categories, add-ons, CSV import, banners and a blog, managed in a role-based admin
- CHIP Collect payments (FPX, cards, e-wallets), order emails via Resend, and Telegram alerts to staff for new paid orders
- Corporate and bulk ordering, an affiliate programme, and Google reviews shown on the site
- Sales analytics dashboard for the owner
Results
Speed, measured the same way before and after. PageSpeed Insights on the old WordPress site, 24 June 2026, against Lighthouse on the new platform, 8 November 2026:
Photograph-heavy pages that load in about two seconds — the brief, met.
Old site (WordPress) → New platform
- Mobile performance: 54 → 90–96
- Mobile largest content shown: 5.1 s → about 2 s
- Mobile Speed Index: 14.2 s → about 2 s
- Desktop performance: 65 → 99
- SEO: 85 mobile / 92 desktop → 100 / 100
- Accessibility: 82 / 85 → 96 / 100
Mobile scores vary a few points between runs; the range above is from two runs on the same day.
Shipping decisions, taken off the staff. Branch choice, same-day eligibility, courier fee, vehicle and courier are now settled at checkout, before payment, for every delivery order.
"Thank you to Syamsudin and the development team for their prompt responses and quick turnaround. They built the website efficiently and delivered a polished, professional result. I really appreciate their excellent work and dedication!"
— Alawi Fitri, Petals & Chocs, in a public Google review
What made it hard
Fast and heavy at the same time. The site's job is to show large, rich photographs of hampers — and to do it in under two seconds on a phone. Every image is served at the size the screen needs through a CDN, pages are rendered on the server so there is content before any script runs, and nothing loads that the page does not use. The old site's plugins each solved one problem and together made the site slow; the new platform has no plugins to accumulate.
A delivery fee that has to be right twice. The customer sees a fee when the address is confirmed and pays it minutes later. The platform keeps the Lalamove quotation ID with the order and re-validates it at payment — same services, same price, same vehicle — so a changed cart or an expired quote cannot slip through as a mispriced delivery. The same discipline applies to the branch: the recommendation is a convenience for the customer, but the origin that reaches the courier is the one the server validated and snapshotted.
Two couriers with opposite APIs. Lalamove quotes live and confirms by webhook; City-Link has no live rate lookup and no cancellation call, so the platform prices it from a maintained rate matrix, creates the shipment after payment, polls for tracking, and cancels through its own order flow when a refund is issued.
Technology
Next.js 16 and React 19 on the front end; FastAPI (Python 3.12) with MongoDB, Redis and Celery workers on the back end; Caddy; Docker Compose on a VM; DigitalOcean Spaces for images; CHIP Collect for payments; Lalamove and City-Link Express APIs for delivery; Resend for email.
Frequently asked questions
Who built the Petals & Chocs website?
petalsandchocs.com was built by Prigo X Technologies Sdn. Bhd., a software company in Cyberjaya, Malaysia.
How does the Petals & Chocs checkout choose a delivery method?
When a customer confirms a delivery address, the platform recommends the nearer of the shop's two branches, checks whether Lalamove can serve the address the same day and quotes it live, and routes addresses outside that area to City-Link Express priced by postcode and weight.
Can Prigo X integrate Lalamove or City-Link into an online store?
Yes. Prigo X integrated Lalamove's quotation, order and webhook APIs and City-Link Express's shipment and tracking API into the Petals & Chocs platform, including automatic vehicle selection, door-to-door service and shipment cancellation on refunds.
Can Prigo X build an e-commerce platform for a business with more than one branch?
Yes. The Petals & Chocs platform manages multiple branches with their own hours and capabilities, recommends the nearest branch at checkout and snapshots the choice onto every order.
How do I start an e-commerce project with Prigo X?
Email hello@prigox.com or book a free consultation at https://prigox.com/contactus.