Axl Tees
A custom commerce backend for a Filipino streetwear label, built because no platform fit the market.
- Year
- 2025
- Role
- Design & Full Stack Development
- Status
- Live
- Next.js 16
- React 19
- Payload CMS
- PostgreSQL
- PayMongo
- TypeScript
- Tailwind CSS
- Resend

Overview
A storefront for AXL / Lahat Bawal, an independent streetwear brand in Puerto Princesa selling graphic tees across regular, cropped, and off-shoulder cuts. Rather than a hosted commerce platform, it runs Payload CMS inside the Next.js app, with Postgres for catalog and orders, S3-compatible object storage for media, and PayMongo for checkout.
The challenge
The brand needed real checkout (cards, GCash, Maya) on effectively no fixed monthly budget. The obvious answer was a hosted platform, but Shopify Payments does not serve the Philippines, which means a third-party gateway plus Shopify's additional transaction fee on top of a monthly subscription. Medusa's managed hosting started at $29/month for development. Saleor's free tier is non-commercial. Every turnkey option either failed on payments or failed on cost.
The approach
I evaluated the platforms against the actual constraint, Philippine payment methods at ₱449–₱499 price points, and found the economics inverted the usual advice. PayMongo costs roughly ₱6–₱11 per GCash or Maya transaction and ₱27–₱29 on a domestic card, so per-transaction fees beat any fixed subscription at this volume. That made a custom backend viable, but only if it didn't mean hand-building an admin dashboard. Payload CMS resolved that: it runs inside the same Next.js app, generates the admin UI from schema, and its e-commerce plugin supplies cart and order primitives, leaving me to implement only the PayMongo flow explicitly.
Features & details
Local payment methods at checkout
PayMongo Hosted Checkout accepts GCash, Maya, and cards, the methods customers here actually use. Payment details never touch my infrastructure, and the hosted flow handles expiry and retries.
Shop, collections, and product detail
Releases are grouped into collections, with per-product pages covering silhouette and size variants. Cropped, regular, and off-shoulder cuts are modelled as variants rather than separate products.
Cart and checkout with address entry
A full cart and checkout flow, including a city autocomplete so customers aren't free-typing addresses that later break delivery.
Order proof upload
Customers can attach payment proof to an order and view it back as an expandable image, a practical necessity for the bank-transfer and e-wallet flows common in Philippine retail.
Admin dashboard generated from schema
Payload supplies the full back office (products, variants, inventory, orders, and media) without my hand-building CRUD screens. Media is served from S3-compatible object storage.
Transactional email
Order confirmations go out through Resend, on a verified sending domain.