Skip to content
SG.
All work

[08] FULL-STACK · 2026

Farmer to Fridge — Web & Commerce API

Commerce backend and mobile API layer for a farm-to-consumer marketplace, built on Craft CMS and Craft Commerce: guest checkout, payments, premium membership and search.

Farmer to Fridge — Web & Commerce API screenshot

01 — OVERVIEW

Farmer to Fridge is a client e-commerce platform that connects local farms directly with consumers. The web storefront runs on Craft CMS and Craft Commerce, and also serves as the backend for the companion iOS/Android app. I owned most of the mobile commerce API surface and a series of checkout, payment and search improvements on the web side.

02 — MY ROLE: BACKEND & API ENGINEER

Designed and shipped the mobile-facing API on top of the existing Craft Commerce stack: route configuration, request validation, cart and order handling, payment-amount consistency, membership endpoints and app-friendly response contracts. Mobile behaviour was added through dedicated endpoints rather than by changing web controllers, so the existing web checkout and premium flows stayed untouched. I documented the API for the mobile team alongside the code.

03 — CHALLENGE: PAYMENT TOTAL CONSISTENCY

After coupons, fees and shipping were applied, the total the app displayed and the amount sent to the payment gateway could differ by one cent because of rounding. I compared the expected mobile total with the Commerce-calculated total in minor units, accepted the app amount only within a one-cent tolerance, and aligned the payment-fee adjuster with that amount. Checkout no longer failed or confused customers on rounding edges.

04 — CHALLENGE: GUEST CHECKOUT WITHOUT A WEB SESSION

The web checkout assumed a session-backed user, while app guests have none. I added guest address and account-status endpoints and resolved carts by cart ID, cart number, email and user ID, with ownership checks so a client can never read another customer's cart or order.

05 — KEY FEATURES

  1. 01Mobile guest checkout API with guest address and account-status endpoints
  2. 02Cart and active-order lookup by cart ID, cart number, email or user ID, with ownership validation
  3. 03Fixed a one-cent rounding mismatch between app total and payment gateway amount after coupons
  4. 04Payment-fee adjustment aligned with the expected payment amount
  5. 05Coupon calculation fixes and premium-coupon upgrade CTA in cart and quick-cart drawer
  6. 06Manual and general bank-transfer payment support for app checkout
  7. 07Bearer-auth premium membership APIs: coupon validation, Stripe Checkout creation, activation and cancellation
  8. 08Mobile Member Zone endpoint and fixed app subscription redirect flow
  9. 09Web premium endpoints kept unchanged while adding mobile-specific behaviour
  10. 10Order-confirmation responses with subtotal, shipping, discount, fees, line-item prices and totals
  11. 11Product image fallback from product fields, line-item snapshots and options
  12. 12Mobile search optimization and advanced search filters shared between web and app
  13. 13Discount and compare-at price metadata in search and product-finder responses
  14. 14Out-of-stock product visibility for the mobile app
  15. 15Email delivery-status check API
  16. 16Admin notification manager and search-log UI rebuilt with Alpine.js filtering, pagination and sticky headers
  17. 17Responsive fixes for dropdown, carousel, product finder and address-bar overflow
  18. 18Mobile shop API documentation maintained alongside route changes
Next projectQuizzyfy