Why I Built My Own E-Commerce Platform Instead of Using Shopify
Why I Built My Own E-Commerce Platform Instead of Using Shopify
"Just use Shopify."
I heard this from everyone. Friends. Fellow developers. That voice in my head at 11 PM when I was debugging a cart synchronization bug for the third time.
They weren't wrong. Shopify is excellent. If I'd used it, I would have had a working store in a weekend instead of months. But I wasn't just building a store — I was building a consulting platform, a portfolio piece, and a learning accelerator all at once.
Here's the honest breakdown of what I gained, what I lost, and whether I'd make the same choice again.
The Architecture
NeedThisDone.com runs on four main services:
- Next.js 14 for the frontend and API routes
- Medusa for product management, cart, and order processing
- Supabase (PostgreSQL) for user data, content management, and vector embeddings
- Stripe for payment processing
Plus Redis for caching, OpenAI for the chatbot, and Vercel for deployment.
That's a lot of moving parts compared to a single Shopify instance. So why do it this way?
What You Gain: Control
Custom Checkout Flow
My checkout isn't a standard e-commerce flow. Customers can book appointments, select consultation tiers, add notes, and schedule follow-ups — all in the same checkout process.
With Shopify, I'd be fighting the platform to add appointment booking into checkout. With my own system, I just built it.
Unified CMS + Commerce
The entire site is editable through an inline CMS. Admins click on any text and edit it directly. This same system manages blog posts, page content, and product descriptions.
In Shopify, the store and the marketing site are separate worlds. In my system, they share the same data layer and editing experience.
AI Integration
The chatbot uses pgvector embeddings to search the entire site's content and answer customer questions. It indexes every page, every product description, every FAQ answer.
Integrating this into Shopify would mean building an external service that scrapes Shopify's storefront, stores the data somewhere else, and hopes the sync stays current. In my system, the chatbot reads directly from the same database that serves the pages.
Reliability Patterns
Circuit breakers, request deduplication, rate limiting, connection pooling — all built into the application layer. These patterns protect the system when external services (Redis, payment processors) have issues.
With Shopify, you're trusting their reliability. Which is excellent — they have a much bigger infrastructure team than I do. But you can't add custom resilience patterns for your specific use cases.
What You Lose: Time
Let me be honest about the costs:
Development Time
A Shopify store takes a weekend. My platform took months of full-time development. That's not an exaggeration. The cart alone — adding items, syncing state, handling edge cases like expired sessions and out-of-stock products — took weeks.
Solved Problems
Shopify has already solved thousands of edge cases I haven't encountered yet. Inventory management for high-traffic sales. Tax calculation across jurisdictions. Fraud detection. Abandoned cart recovery.
I'm solving these problems one at a time as they come up. Shopify solved them years ago.
Plugin Ecosystem
Need email marketing? Shopify has 200 integrations. Need reviews? There are 50 apps for that. Need loyalty points? Click install.
I built the loyalty points system myself. It took a week. The Shopify app would have taken 10 minutes.
The Real Reason
Here's what I don't say in polite company: the platform is my resume.
When a potential client or employer looks at NeedThisDone.com, they don't see a Shopify theme. They see 74 API routes, 160+ React components, 71 test files, and 53 database migrations. They see that I can architect a system from scratch, connect multiple services, handle payments, build admin dashboards, and ship to production.
A Shopify store, no matter how customized, says "I can configure platforms." A custom platform says "I can build them."
For someone transitioning into tech without a CS degree, that distinction matters.
Would I Do It Again?
Yes, but with caveats.
If I were building a store to sell products and make money as quickly as possible, I'd use Shopify. Full stop. The platform is phenomenal at what it does.
But I wasn't optimizing for speed to market. I was optimizing for learning, for building a portfolio, and for creating something that demonstrates what I'm capable of.
The custom platform taught me more about software engineering in a few months than any course or tutorial could have. And it gave me something concrete to point to when someone asks "what can you build?"
That said, I made some decisions I'd change:
- I'd use Medusa from day one instead of building custom product management first and migrating later.
- I'd add TypeScript strict mode from the start instead of gradually tightening it.
- I'd build the test infrastructure before the first feature, not alongside the tenth.
The architecture itself — Next.js, Medusa, Supabase, Stripe — I'd keep exactly as is. Each service handles what it's best at, and the boundaries between them are clean.
The Bottom Line
There's no universal right answer. Shopify is the smart choice for most businesses. Custom builds are the smart choice for developers who need to prove they can build.
Just go in with your eyes open about what each path costs. And if you choose the custom route, commit to it fully. Half-custom, half-platform is the worst of both worlds.
Need help deciding which approach is right for your project? Check out our services or let's talk.
Need Help Getting Things Done?
Whether it's a project you've been putting off or ongoing support you need, we're here to help.