Show HN: YourNextStore – an open-source Shopify with Stripe as the back end

282 pointsposted 3 days ago
by zaiste

87 Comments

thelittleone

3 days ago

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).

nextworddev

3 days ago

What alternatives do you recommend?

notpushkin

3 days ago

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/

Palmik

3 days ago

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.

ilrwbwrkhv

3 days ago

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

selcuka

3 days ago

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.

notpushkin

3 days ago

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).

chasebank

3 days ago

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.

marcus_holmes

3 days ago

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.

fgkramer

3 days ago

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

marcus_holmes

2 days ago

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

zaiste

3 days ago

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.

turnsout

3 days ago

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!

zaiste

3 days ago

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

turnsout

3 days ago

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

busymichael

3 days ago

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!

zaiste

3 days ago

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!

synicalx

3 days ago

> 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.

zaiste

3 days ago

I completely agree with you on WooCommerce themes.

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

internet101010

3 days ago

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

dwwoelfel

3 days ago

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

zaiste

3 days ago

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.

sroussey

3 days ago

There are several third parties to get this data.

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

qianli_cs

3 days ago

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?

zaiste

3 days ago

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.

maaaaattttt

2 days ago

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.

zaiste

2 days ago

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...

mmcwilliams

3 days ago

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!

zaiste

3 days ago

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

mmcwilliams

2 days ago

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

todotask

3 days ago

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?

typeofweb

2 days ago

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.

ctrlGsysop

3 days ago

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.

typeofweb

2 days ago

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

kennywinker

3 days ago

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.

zaiste

3 days ago

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

kennywinker

2 days ago

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.

wired_devil

3 days ago

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

typeofweb

3 days ago

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

zaiste

3 days ago

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

atrus

3 days ago

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.

zaiste

3 days ago

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)

atrus

3 days ago

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!

stopachka

3 days ago

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?

zaiste

3 days ago

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.

steve_adams_86

3 days ago

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.

subarctic

3 days ago

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?

typeofweb

2 days ago

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!

aloukissas

3 days ago

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

zaiste

3 days ago

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 :)

aloukissas

3 days ago

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!

sroussey

3 days ago

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.

mbym

3 days ago

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.

diggan

3 days ago

> 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?

cranberryturkey

3 days ago

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.

zaiste

3 days ago

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?

cranberryturkey

3 days ago

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

bbbbbenji

2 days ago

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?

tensor

3 days ago

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

typeofweb

2 days ago

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

redareda9

2 days ago

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

zaiste

2 days ago

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?

lakomen

3 days ago

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.

typeofweb

2 days ago

Google Pay is available as part of Stripe offering!

zaiste

3 days ago

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.

kungpowpow

3 days ago

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

mrbluecoat

3 days ago

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

zaiste

3 days ago

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

tamimio

3 days ago

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

zaiste

3 days ago

Thanks!

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

2Gkashmiri

3 days ago

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

zaiste

3 days ago

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?

pstorm

3 days ago

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

zaiste

3 days ago

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.

jklinger410

3 days ago

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

Just use server side tag manager.

todotask

3 days ago

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?

typeofweb

2 days ago

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?

todotask

5 hours ago

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.

bartimor

3 days ago

Fingers crossed! A great team behind the project!

zaiste

3 days ago

Thank you for the kind words! :)

Eric_WVGG

2 days ago

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

skilly

3 days ago

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!