Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: YourNextStore – an open-source Shopify with Stripe as the back end (github.com/yournextstore)
285 points by zaiste 32 days ago | hide | past | favorite | 87 comments
We’re building Your Next Store, a modern, ultra-fast, open-source commerce in Next.js with Stripe as the backend - no DB required.

Selling online is often more complex than it needs to be. Setting up a storefront with great performance can feel daunting and time-consuming. There are many plugins, libraries, etc - the choice can be overwhelming.

Plus, in e-commerce, the backend and frontend are often written in different languages (e.g., PHP, Python, or Ruby for the backend). This increases the complexity and makes code management more challenging, especially for teams.

After working in e-commerce for several years, Michał and I set out to build the fastest and most compelling storefront for small to medium-sized merchants. Fast e-commerce sites are crucial because slow pages hurt sales [1]. Unfortunately, performance issues are still very common. The beauty of Your Next Store is its simplicity. No additional tools and no databases - just Next.js and Stripe.

On the technical side, we use App Router, React Server Component, Partial Pre-Rendering, Optimistic Updates, and Streaming with Suspense to make the store faster and leaner so it feels almost like a static website.

In summary:

Modern & Popular Stack: Built with Next.js, React.js, and TypeScript, making development faster and hiring easier compared to platforms that use less common frameworks like Shopify’s Liquid.

No Database Needed: Stripe handles the backend, reducing the need for complex infrastructure and simplifying the setup process.

Open Source: Free and open (AGPL), with the option for a commercial license if needed.

This is just the beginning. We want to make YNS even better and easier to use and eventually provide a good, open-source alternative to Shopify.

Check our code at https://github.com/yournextstore/yournextstore

We’d love to hear your thoughts and feedback! What features would you like to see next?

[1]: https://www.deloitte.com/ie/en/services/consulting/research/...




I would never build anything that depends on stripe. Granted payments is a difficult problem due to fraud, chargebacks etc, but stripe has a terrible track record of freezing legitimate accounts and downright ignoring all communications. They force arbitration (using an arbitrator that depends on stripe for revenue), and terms that allow them to invest the funds they freeze. Additionally, their terms prohibit class actions (though not sure if that would hold up).


What alternatives do you recommend?


I’d cautiously use Stripe in a way that allows you to switch to another payment provider if/when needed.

For SaaS applications, I think Lago is pretty neat, for example: https://www.getlago.com/ (open source, YC S21)

And for ecommerce, there’s so much solutions that I don’t know what to recommend. If you’re looking for something headless, I’ve heard good things about Medusa (open source): https://medusajs.com/


For one time payments, like in e-commerce, it's relatively trivial for even a small business to implement.

For subscriptions, achieving portability is much trickier.


Lago is not a payment service provider. You cannot charge credit cards through them.


Note the GP's first sentence:

> [...] use Stripe in a way that allows you to switch to another payment provider

You can still use Stripe via self hosted Lago, and replace it with something else if they ban you.


This exactly. Start with Stripe, swap them out if problems arise (or your MRR is high enough for you to be able to negotiate a lower % with other providers etc).


Use an agnostic payment vault like spreedly or hyperswitch and send transactions to whichever gateway you’d like. Every processor wants vendor lock-in, terrible for a business. I’m not sure there’s a great option for small ecom businesses with no dev team, though.


I would store my data in a database that I control, so that it cannot be disconnected or altered by a service agreement change, or an API "upgrade".

I would ensure that any payment processing can be done through a range of processors, so that if any one of them becomes unavailable my store is not affected and I can continue taking payments.

I would also route payments through the processors dependent on cost. Some rails are more expensive for particular transaction types or countries, etc. Being able to switch between them at will is extremely useful.


You understand the complexities and risks involved in maintaining the setup you’ve described?

It’d be unreasonable for most folks who just want to sell regular products and deal with marketing and sales. Those become the biggest tasks once they start getting traction (ask any relatively successful indie hacker). Paying the processor’s fee is worth it for most


I agree, which is why most people just use Shopify and make all this their problem.


Snipcart?


I can no longer edit the post, but here's the working demo of YNS https://demo.yournextstore.com

To see Stripe Link in action, use the email `test@test.com` and then enter `000000` when it activates.


I've wanted to build this exact thing so many times—nicely done! I haven't dug into the details too much, but does it support digital downloads? That and "lead magnet" downloads are two things that would help a lot of stores!


Thank you! we initially focused on physical products, but adding features for digital products should be even easier. Could you point me to your ideal solution or describe how it would work in a perfect scenario? Something we could use as an inspiration for both: digital and lead magnet downloads


Sure thing! On the pure digital download side, take a close look at what Gumroad [0] is doing. Also check out Sellfy [1], which is also sort of a Shopify replacement.

In terms of lead magnets, you might check out Podia [2], which supports lead magnets as well as digital products.

Some thoughts on how basic digital purchases might work:

- The seller upload files related to a purchase (which may include variations, such as macOS, Linux and Windows binaries) to cloud storage somewhere (perhaps S3)

- After purchase, the buyer gets an email with either a license token or a download link, which leads to YNS. YNS verifies the purchase and proxies the download

- Ideally YNS allows buyers to resend the download link or download the file again on the site

- Also ideally, YNS allows the seller to issue an update, which will alert all the buyers about a new version available to download

The MVP is simple one-time purchase downloads. Subscriptions are probably out of scope for a minimal shop experience.

The lead magnet flow would be basically the same but with no purchase, but that may make it difficult if Stripe is serving as the backend!

  [0]: https://gumroad.com
  [1]: https://sellfy.com/use-case/downloads-files/
  [2]: https://www.podia.com/features/sell-digital-downloads


The feature I like the most in your demo: the one page checkout. It comes very close to shopify's excellent check out. Nicely done!

WooCommerce should be filling the role of viable self host alternative to Shopify, but it falls short. Even with the plugin ecosystem, it is much harder to run an quality cart and checkout.

Congrats on your launch!


Yes! One-page checkout has been, and continues to be, one of our top priorities. There are still a few minor improvements to be made, but I’m really happy with how smooth the experience is rihgt now.

Have you tried it with Stripe Link? This reduces the entire checkout process to just four (4) clicks; no need to fill out forms as long as your details have been saved from a previous purchase elsewhere on the Internet.

Thank you for the kind words!


> WooCommerce should be filling the role of viable self host alternative to Shopify, but it falls short.

WooCommerce itself is mostly fine as a backend, but the themes for it (including the built-in/free ones) are mostly awful. Ugly layouts, huge bloated payloads, and checkouts that look so unprofessional most people will think they're fraudulent.

There are good themes out there but you'll be paying decent money for them.


I completely agree with you on WooCommerce themes.

we're also working on themes, which will be based on shadcn UI.


The little link to show full cart when adding something is another nice touch.


How do you handle shipping price calculations? Is that also a feature in Stripe's Product Catalogue?


This feature isn’t ready yet, but it’s something we’re actively working on. To have shipping right away, it could be outsourced to a third party, and some of our partners are developing such functionality this way.

In the long term, we aim to make it tightly integrated with Stripe, making Stripe the core infrastructure for your e-commerce needs.


There are several third parties to get this data.

I prefer Shippo, know the founders, and integrated inside Weebly (now Square).


If it doesn't need a database, then how does it manage inventory? For example, what happens if multiple people try to buy the same products but you don't have enough inventory?


We started by storing data like stock as product metadata directly in Stripe. Plus, we’re developing a thin layer to manage the sync between individual stores and Stripe (e.g. atomicity)

This solution is not (yet) ideal, but works well for most small stores and we have some ideas how to improve it further - composability/headless can be overwhelming in many such scenarios.


Tried the demo and as people report it's very well done and fast! Good job!

Just wanted to let you know that I stumbled upon a bug whilst removing products from the cart (setting quantity to 0) it started refreshing and the interface stoped responding. Maybe this wasn't due to the action but rather to the current traffic? Anyway just a head's up.


Thanks! Happy you liked it!

I can confirm the bug - thanks for the heads-up! We recently did a few iterations on that part, and it looks like something slipped through the cracks...


This is pretty slick. I like that you have Umami support. It would be nice to wrap all of this up in a Dockerfile but that wouldn't be too hard to do for my own purposes.

It's been a while since I've used Stripe outside of the subscription features but how hard would it be to support coupon codes or sales? Is there a plan to support this?

Great work!


Thanks!

We're experimenting quite a bit at the moment - starting with Umami, but we’re also considering developing a custom solution (analytics subset) specifically for e-commerce

Coupons are on our roadmap, and adding them should be relatively straightforward. Would you be interested in beta testing it with us? :)

A Dockerfile has been proposed by the community. I’ll review it today: https://github.com/yournextstore/yournextstore/pull/22/files


Happy to beta test! I'm available at hi at username dot com


Great!!


It's fast because your demo prefetches the listings when the mouse cursor hovers or taps, which is possible with traditional e-commerce, I dislike that kind of UX that are wasting user data usage. Is there an option to disable prefetching?


Of course! It’s open source for a reason: feel free to fork and disable prefetching. Although, in my opinion, that’s not the best idea if you have your users’ experience in mind.


It seems like anything you can configure with next.js applies here. And TIL'd there isn't a way to globally disable prefetching[0] with it. You can disable it per individual link, or write & use a custom link component.

[0] https://github.com/vercel/next.js/discussions/24437


Nice! I was searching for something like this! Jus got a install error: corepack install Adding pnpm@9.9.0+sha512.60c18acd144bff695d339be6ad13f7e936eea6745660d4cc4a776d5247c540d0edee1a563695c183a66eb917ef88f2b4feb1fc25f32a7adcadc7aaf3438e99c1 to the cache... Internal Error: Mismatch hashes. Expected 60c18acd144bff695d339be6ad13f7e936eea6745660d4cc4a776d5247c540d0edee1a563695c183a66eb917ef88f2b4feb1fc25f32a7adcadc7aaf3438e99c1, got 60c18acd138bff695d339be6ad13f7e936eea6745660d4cc4a776d5247c540d0edee1a563695c183a66eb917ef88f2b4feb1fc25f32a7adcadc7aaf3438e99c1


We've updated pnpm to 9.10.0, and it's alright now. Thanks for pointing this out to us!


Sorry about that! I'd need to learn a bit more about your setup.

For starters could you remove the `packageManager` from the `package.json` entirely and try again?

if you're available, we can do a quick video call and I'll see exactly what happens on your side as I cannot reproduce it atm


Nice setup. I hope you and the team succeed! When new ecomm systems fire up every couple years, I always hope B2B functions (volume pricing, accounts, wholesale) get to the front of the list but alas most focus on B2C - I get it, founder backgrounds with consumer products usually drives the initiative. But often the wake is a 1k dead small stores and a short product life because no PMF. But you can get tech debt lock-in with B2B - to possibly help extend your runway ;)

But of course, stick to your roadmap. It’s nice seeing you saying ‘no’ to things.


Thanks for the kind words! We read and analyse all feedback, and we’re grateful for it.


Oh wow, I actually built something similar using python/Flask: https://gitlab.com/atrus6/simple_shop

The biggest difference between ours is that I used a local csv file as the source of truth. This synced up to Stripe as I felt Stripe really bogged down in the admin area once you hit a few hundred products, as well a working with multiple product images.

Do these also sync with Google and Facebook as well? That's def a nice feature for additional sales.


Using CSV is an interesting idea! I havent looked at your code yet - does it automaticaly sync when something changes in the file? Do you have an admin panel for end users? In YNS, we provide a dashboard that simplifies managing products and orders (though it’s not yet open-sourced)


At one point I did, but as this was mostly a personal project to manage my own two stores I found it easier to just edit the csv. The only dashboard was for order fulfillment and getting the shipping labels from Easypost.

The simpleshop code was to take the project in the direction you have, I just never finished/publicized it, so congrats on the launch!


One limitation of using stripe as a backend, is that many online sellers end up using multiple marketplaces. I sell via my web store (stripe backed), via tindie, and via reverb.com. I started building an admin app to handle generating shipping labels and tracking order status. My initial version used stripe metadata to store all this, and it worked great - but once i started selling elsewhere, i had to use a traditional db backend to store data associated with those orders.


That's an interesting insight, and I'd like to learn more about it.

Off the top of my head, have you considered using the Stripe API directly in those other places? i.e. Stripe as the source of truth, with data being fetched to those other places as REST calls for example?

I imagine that linking those "other" orders with products might be a bit tricky, though


Oh... I hadn't though of that. I guess you're suggesting maybe tracking orders in stripe by creating new orders to mirror the ones made outside of stripe? I would have guessed that stripe's api wouldn't have room for that - but that might be short shortsightedness on my part. I may have to look into that next time I touch the admin app.


Tried the demo — _very_ snappy!

I was surprised to hear there was no database needed! How does that work? I guess you can cache most of the requests to stripe? What kind of data can you store on stripe?


Thanks for the kind words!

We use Stripe’s "Product Catalogue", a relatively old but, to our surprise, somewhat lesser-known feature. By leveraging metadata, you can represent most e-commerce concepts, and we’re actively working on expanding those capabilities even further, beyond products and orders.

And yes, caching is the key ingredient in YNS. The combination of RSC and Next.js Cache works really well - different React.js components can independtly fetch remote data and Next.js gives you great flexibility in managing that.


This strikes me as smart. I'm building something similar based on pocketbase, which I really like, but I dislike the complexity in general. I wasn't smart/brave enough to go down the metadata rabbit hole despite knowing it was a possibility, but I'm half-regretting it now. It's awesome to have a fully static store with no database to worry about.


I'm not that well versed in these legal issues, but is the AGPL practical if I want to use this to make an online store and pay a designer to get my own custom look? Also is there a possibility of third party designers/developers selling paid themes that work with YourNextStore, and is the licensing compatible with those themes being sold with a non-open-source license?


It is practical, you’ll just have to share the changes you’ve made under the same open source license. Alternatively, you can reach out to us to obtain a commercial license that’s not open.

Third party can sell paid themes as long as they’re open source – similar to how the Wordpress ecosystem works. All plugins and themes are open source, including the paid ones.

This is the state of things for now, but it could change in the future. We’re open to your feedback!


I’m super excited for this! That demo site is so fast (I love Next.js).

And this is awesome: “No additional tools and no [separate] databases - just Next.js and Stripe… Stripe handles the backend”. I once built a website where I stored everything in Stripe. It made it so quick to get started, and I can use the Stripe admin dashboard to make edits.


> I once built a website where I stored everything in Stripe

How did you manage your dev environment in a setup like that? I guess you'll have one env for production, one for staging/testing and then one that all devs share?


How complete is Stripe's tax product? Typically I've seen ecommerce apps use something like Avalara for this.


Stripe’s tax features have worked well for our use cases so far, and we also have experience with Avalara from previous projects. Would you be open to connecting over a video call to discuss your specific needs? I think it might be easier that way as it's a broad topic :)


I don't have a need at the moment just curious. It looks like Stripe Tax doesn't support all US states. Will probably be a good product when it's out of beta!


Ah yeah, the rules get messy.

Is the local tax on just the product, the product + shipping, or product + shipping + handling (now you know why these are sometimes broken out)??

New York and California do it differently. And then all the way down to local municipalities. And tax holidays! So many cases to track.


Can I import my Etsy store into this? I got a client who is using Etsy and would like to convert them to this instead.


That sounds like a great idea!

Actually, my fiancée sells cosplay props on Etsy, and she was looking for a simpler solution - that’s partly how the idea for YourNextStore began.

Here's a prop she made for me :) https://www.instagram.com/p/C2fz0O8quhe/?img_index=1

Do you have a store with a smaller product catalog that we could use as a test bed for the migration?


i can probably find one. hit me up on email or something: anthony@profullstack.com


Great! Let's do this. I'll send an email


Did you send me one?


How does the shipping support work? Is it easy to add plugins for different shipping companies?


Not right now, unfortunately! For now, there’s just a flat shipping rate. We’re working on it!


Would it be possible to accept traditional bank transfers? The order would be processed by Stripe but payment manually.

Has anyone made a script to import products from Woocommerce to Stripe?


Seems really good and fast!

Unfortunately not ready to migrate everything over something that could be abandoned soon. Will wait a bit.

For now, I'm trying to move everything to Medusa.

Good luck! Promising project


We're planning to stick around a bit longer :)

Is there anything I can do to help or convince you to give us a try?


About to start a web hosting service. I'm about to write a sales frontend. I picked Google Pay because it's free. I might clone it and adapt to use Google Pay.


Congrats! Looking forward to your project! Let me know what's missing and what's not ideal and generally your feedback. You can contact me by email once you start building.


Google Pay is available as part of Stripe offering!


Is Shopify only used for inventory/product management? Does Shopify fully free if you use Stripe as a payment processor?


Really great start. Would love to see integration middleware support added to the mix, like Celigo, IFTTT and Zapier.


Thanks! Could you describe your use case so that I could better understand how to implement this?


Looks great! I know stripe is core of it, but is it possible to add crypto currency payments as an option too?


Thanks!

Yes, we’re working on this - we plan to start by enabling stablecoin-only payments. Would that work for your use case?


Any way to add support for something like razorpay.com ? Stripe is not available everywhere


we’re fully focused on Stripe and don’t plan to support other providers. This is because e-commerce is more than just a payment gateway. Our goal is to integrate various Stripe features into a comprehensive and convenient package for online commerce, while using the synergies between different Stripe products.

That said, the project is open-source, so the community could add support for something like Razorpay.

When you mention Stripe isn’t available everywhere, which country would you like to see added?


I’ve worked in e-commerce for years and the thing that always slows down the sites the most is 3rd party scripts. Are you addressing this? I couldn’t find anything in the repo.

Ive had websites slow down 10x just by introducing the Facebook re-targeting script for instance


Yes, we've had similar experiences and plan to address them to some extent. In certain cases, like with Facebook, it might not be straightforward, but we want to provide built-in alternatives e.g. analytics specifically tailored for e-commerce that cover ~80% of what you need, with the rest being a trade-off.

I also think Facebook, Google, Hotjar et al. will eventually get better with those scripts.


This really isn't a problem a web platform can solve for itself.

Just use server side tag manager.


still think that your users will encounter broken links when you re-deploy a new build to production, which is common in SPAs. Have YNS solved this issue?


Can you share more details about the problem you’re describing? I’ve never experienced any broken links after redeploying apps. Do you mean it’s vercel specific? How to reproduce?


Those shared on Twitter when they deployed React app and assuming I came across one of the popular site that always prompt a notification (https://www.carousell.sg) to reload the page whenever there is a new update.


Fingers crossed! A great team behind the project!


Thank you for the kind words! :)


Thank you, from the bottom of my heart, for naming the project “YourNextStore” instead of “MyNextStore.”


This is an impressive project! Combining latest Next.js and Stripe for a no-db, open-source e-commerce solution is a brilliant choice. It simplifies development and boosts performance with modern tech. Excited to see where YourNextStore goes next!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: