Why We Built Xcapade Without Shopify
The first question everyone asks when they hear about Xcapade is: “Why not just use Shopify?” It's a fair question. Shopify is a $70B company with thousands of engineers. Why would a solo developer build a custom e-commerce platform from scratch?
The answer is simple: Shopify is built for selling products. Xcapade is a two-sided marketplace for tourism activities. These are fundamentally different problems.
The requirements that ruled out Shopify
Xcapade needed features that don't exist in any off-the-shelf e-commerce platform:
- Spot bookings with real-time conversations. A traveller arrives in Rishikesh and wants to go rafting in 2 hours. They send a request. The vendor sees it instantly via Socket.IO. They negotiate timing, group size, and pricing in a conversation thread. Then confirm and collect payment — all in real-time.
- Vendor settlement and commission tracking. The platform takes a commission on every booking. Vendors need a dashboard showing exactly how much they earned, what commission was deducted, and when their next settlement is coming. This isn't a “Shopify app” — it's core financial infrastructure.
- Two separate applications sharing one backend. The public marketplace and the vendor dashboard are different products with different UX requirements. Vendors need analytics, listing management, and reservation calendars. Travellers need discovery, maps, and a booking flow. These can't be the same codebase.
- Activities aren't products. A rafting trip doesn't have a SKU, inventory count, or shipping address. It has availability windows, group size limits, weather dependencies, equipment requirements, and safety waivers. The data model is completely different.
What we chose instead
The architecture is two Next.js applications — the public marketplace running Next.js 16 with React 19, and the vendor admin dashboard on Next.js 15 with React 18 — both connecting to a Strapi CMS backend. Real-time features use Socket.IO. Payments run through Razorpay.
This gives us independent deployment cycles. We can ship a new booking flow on the marketplace without touching the vendor dashboard, and vice versa. And when we need to change something in the backend, both apps pick it up through the shared API.
The infrastructure decision
We deployed on a single Vultr VPS with PM2 for process management and Nginx as a reverse proxy. Not Vercel. Not AWS. A straightforward Linux box.
Why? Predictable costs. At the early stage, a $24/month VPS running both applications is dramatically cheaper than serverless pricing at scale. And with PM2, we get zero-downtime deployments, process monitoring, and automatic restarts — the same operational basics you get from any PaaS, at a fraction of the cost.
When to go custom
The rule is straightforward: if your product is the platform, build the platform. If you're just selling products and need an online store, use Shopify — it's genuinely great at that.
But the moment you need a two-sided marketplace, real-time features, custom financial workflows, or a data model that doesn't fit the product/variant/SKU paradigm — you're better off building custom. The initial investment pays for itself in flexibility within months.
Xcapade is proof of that. A solo developer, AI-powered workflow, two production applications, real-time bookings, automated settlements — all running on a single VPS. No platform lock-in. No monthly app subscription fees. Complete control over every pixel and every data flow.
Building something similar? Let's talk on WhatsApp or check out the full Xcapade case study.