Skip to main content
TIEMAN.IT

Your own Next.js webshop, not another Shopify template

You sell products. But every month you pay a platform that does not know you, does not know your customers and dictates your checkout. I build webshops from scratch on Next.js: Stripe checkout, your own admin, no platform fees per order.

When to choose a platform and when to go custom

Shopify works well when you have a standard product catalogue, want to launch quickly and accept the monthly costs. That is not a bad starting point. But as you grow, the platform starts to feel restrictive. Transaction fees per sale, a theming system that keeps you away from the actual code, and a checkout that you can only customise to a limited extent.

WooCommerce gives more freedom on paper, but that freedom has a different price: a WordPress environment that bloats as you stack more plugins, slow performance under traffic spikes and a security surface that grows with every extension you install.

A custom Next.js shop is the better choice when you already have some revenue, want full control over your checkout flow, need specific integrations with your logistics or accounting, or know you will be operating at a different level within two years. You pay once for the build and then manage your own infrastructure.

What I build: Next.js, Stripe and an admin you can actually use

A standard delivery consists of the following components:

  • Next.js App Router frontend with server components for maximum performance and static pages for product overviews
  • Stripe Checkout or Mollie Payment Element for payments, including iDEAL, credit card and SEPA direct debit
  • Custom admin panel for product management, order status and stock indicators, built on a lightweight Next.js route or a headless CMS like an own CMS
  • Headless data layer: products and categories in a database of your choice (PostgreSQL via Supabase or PlanetScale, or a flat-file approach with MDX for small catalogues)
  • Webhooks for Stripe events: payment confirmation, refund, subscription renewal
  • Transactional emails via Resend or Postmark for order confirmations and shipping notifications
  • Hetzner VPS or Vercel hosting depending on scale requirements

Every choice in this stack is reversible. You own the code and the data. If you ever want to switch to a different provider, I update the integration without rebuilding the entire shop.

Stack choices: Stripe vs Mollie, CMS vs custom admin, Hetzner vs Vercel

For payment integrations I use Stripe by default. The documentation is excellent, the dashboard tools are complete and the Stripe library for Next.js works without friction. If you specifically want iDEAL as the only payment method and prefer a Dutch provider, Mollie is a solid alternative. Both integrations are comparable in scope.

For content management I assess which approach fits best per project:

  • Small catalogue (up to 200 products): MDX files in the repository, managed via a simple admin route or directly in Git
  • Medium catalogue (200 to 2000 products): an own CMS as a headless CMS, self-hosted, no monthly SaaS costs
  • Large or dynamic catalogue: PostgreSQL with a custom admin interface or an own CMS as a CMS for editorial teams
  • Hosting via Hetzner VPS for high peak load or specific GDPR requirements, via Vercel for serverless preference and global CDN distribution

What is not part of my standard build

To keep expectations clear, these are the components that fall outside standard scope:

  • Multi-vendor marketplace: multiple sellers on the same shop with separate payouts. This requires a significant extension of the data layer and the Stripe Connect integration.
  • Complex B2B portals with contract prices per customer, quote flows or approval workflows. That is custom work on top of custom work.
  • ERP integrations with systems like SAP, Exact or AFAS. I can build API connections, but the scope depends entirely on the availability and documentation of the ERP API.
  • Dropshipping integrations with wholesalers that use their own feed formats.
  • Fully automated price optimisation or repricing based on competitor monitoring.

If your requirements fall outside this list, I discuss scope during the intake. Some extensions are feasible as a separate module on top of the base shop.

-- Client case

T&H Car Care: from Shopify template to custom Next.js shop without platform fees

T&H Car Care sells car detailing products to both private buyers and professional detailers. They ran on Shopify with a standard theme and paid a combination of monthly subscription costs and transaction fees per sale. As the range grew and they wanted to differentiate specific customer groups in the checkout, the Shopify theme system kept getting in the way.

I built a Next.js shop with App Router, Mollie Payment Element for checkout and a custom admin for product management and order status. Products live in a PostgreSQL database on Hetzner. The checkout distinguishes between private and business customers and adjusts VAT processing automatically based on the entered VAT number.

98
Lighthouse Performance
0.9s
LCP
0
Platform fees per month

The shop runs on a Hetzner VPS for 5.90 euro per month. There are no platform fees per transaction, only the Stripe processing costs that apply with any provider. The codebase is fully owned by T&H Car Care.

How this differs from a Shopify Plus build

Shopify Plus gives you more flexibility than the standard plan: a customisable checkout via Checkout Extensibility, access to scripts and more API calls per second. For large retailers with high volumes that is a logical choice. But you pay a fixed monthly fee of a few hundred euros or more, on top of Stripe processing costs, and you are still bound to the Shopify infrastructure.

A custom Next.js shop has no monthly platform subscription. Hosting costs a fraction of what Shopify Plus charges. You manage your own database, your own checkout logic and your own release cycle. When I build a new feature, it goes through a deployment on your server, not through an App Store review.

The downside is that you do not have a Shopify App Store. If you need a specific app tomorrow that already exists for Shopify, I have to build that integration or find an alternative API solution. That takes time. Shopify Plus gives you more out-of-the-box options. A custom shop gives you more control over what happens under the hood.

Who is this the right choice for

A custom Next.js shop fits best for:

  • SMEs that want to launch their own shop without monthly platform fees and without vendor lock-in
  • Existing Shopify or WooCommerce shops that are hitting platform limits: slow checkout, limited customisation, high costs at growing volume
  • Businesses with specific checkout requirements: B2B/B2C distinction, VAT handling based on customer segment, multi-locale shop with local currencies
  • Teams with an in-house developer or a fixed technical partner who can maintain the codebase after delivery
  • Scale-ups that want to migrate from legacy Magento or WooCommerce to a headless Next.js architecture

If you are just starting out, have a small range and do not need specific integrations, Shopify or a simple Snipcart-on-static-site pattern is probably faster and cheaper for the first phase. I would rather say that honestly than convince you of custom work when a platform is a better fit.

Investment and scope

The price of a custom shop depends on the number of product categories, the desired integrations and the complexity of the checkout. I work on a fixed project price after an intake conversation.

Basic shop
On request
Next.js, Stripe, custom admin, up to 500 products, Hetzner hosting. Suited for starters who want to avoid platform fees.
Advanced shop
On request
The above plus: B2B/B2C distinction, multi-locale checkout, larger catalogue, CMS integration (my own CMS built into your site).
Migration from Shopify/WooCommerce
On request
Data migration, URL structure preservation, redirects, checkout parity. Scope after audit of current shop.

All prices on request. After the intake you receive a fixed quote based on the agreed scope.

Read more

-- Veelgestelde vragen

Heb je een vraag?

I use Stripe by default. Stripe supports iDEAL, credit card, SEPA direct debit, Apple Pay and Google Pay without extra configuration. If you prefer Mollie, that is also possible. The choice does not affect the rest of the stack.
Yes. The checkout adjusts the VAT calculation based on the delivery country. For business customers who enter a valid VAT number, I apply the reverse charge mechanism automatically. iDEAL is available by default via Stripe without additional costs.
For a small catalogue you manage stock via the custom admin interface. For larger catalogues or connections to a WMS or ERP I build a webhook integration that processes stock mutations at the moment the order closes. The exact approach is discussed during the intake.
Yes. The checkout can let customers choose between private and business, with separate pricing logic, VAT treatment and invoice fields for B2B. Contract prices per customer or quote flows are possible as an extension.
Yes. Next.js has built-in internationalisation via next-intl or App Router routing. Currency conversion is connected to an exchange rate API or set up as fixed prices per locale. The URL structure follows the /locale/path pattern.
Yes. The shop runs on your own server or a server I manage for you on Hetzner or Vercel. You own the domain, the codebase and the database. There is no monthly licence fee due to me or to a platform.

Ready to step away from platform fees?

Send me a description of your product range and your current situation. I give you honest advice about what a custom shop delivers for your specific case.